PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen eines Windows Entwicklers an die Linuxer



Ratman
22-01-2007, 21:46
Hallo liebe Community,

auf der suche nach einer aktiven Linux Community bin ich über das Forum hier "gestolpert".
Der Grund für mein Posting ist dass ich über den Tellerrand schauen möchte und im Moment ernsthaft am überlegen bin künftig Software unter Linux zu entwickeln.
Hintergrund: ich verdiene zurzeit meine Brötchen mit Softwareentwicklung unter Windows, dabei setzte ich hauptsächlich Visual Studio 2005 mit C# ein. Angefangen habe ich mit Pascal (unter Mac OS), bin dann auf C, respektive C++ (Gerätetreiber geschrieben) umgeschwenkt und seit ungefähr drei Jahren benutze ich C#.
Da sich in meinen Umfeld irgendwie alle auf Vista stürzen, wollte ich nicht lemmingartig hinterher folgen, sondern bin auf der Suche nach Alternativen. Beobachte die Linux Entwicklung schon seit längerer Zeit und bin zum Entschluss gekommen, dass es vielleicht für mich Sinn machen würde in der Zukunft unter Linux zu entwickeln.
Auf der Suche nach geeigneten Literatur im Internet haben sich leider einige Fragen aufgetan. Mein erster Eindruck ist (und hier kann ich mich auch irren) dass es unter Linux fast alles an Software gibt, nur das jeder Softwarehersteller sein eigenes Süppchen kocht. Welche Mechanismen gibt es unter Linux die man mit COM vergleichen könnte. Um eins klarzustellen: COM ist [zensiert] aber es macht die Windowsentwicklung ziemlich schnell. Ich besorge mir die benötigten Applikationen, baue ein bisschen Steuerung zwischen den Applikationen, code ein wenig Eigenlogik dazu und fertig ist meine Anwendung. Gibt es ein appliaktionsübergreifendes Objekt Model unter Linux und halten sich die Entwickler daran. Sprich: kann ich in meiner Anwendung ein OpenOffice Dokument integrieren und die Formatierung fernsteuern?
Ich entwickle hauptsächlich kaufmännische Anwendungen. Welche Sprachen würden sich hier empfehlen?
Wenn ich das richtig verstanden habe, hängt die Wahl des GUI Frameworks von dem betreffenden Windows Managers. Heißt dass, das meine Applikation entweder unter KDE oder GNOME läuft aber nicht beides?
Wie sieht es mit Java aus? Wird die Linux Version zeitnah von Sun gepflegt? Sehen die Anwendungen Linux-like aus oder haben die eine eigene GUI? Ich habe mich vor drei Jahren gegen Java für dot Net entschieden, weil die Applikationen damals nicht nativ (windowslike) ausgesehen hatten. Wie steht es mit Performance der Java Applikationen aus?
Welche IDEs soll ich mir anschauen?

Ich weiß, Fragen über Fragen. Falls es aber keine große Mühe machen würde, wäre ich froh wenn mir jemand helfen würde sich einen Überblick zu verschaffen.

Schon mal vielen Dank
Rat

peschmae
22-01-2007, 23:48
Gibt es ein appliaktionsübergreifendes Objekt Model unter Linux und halten sich die Entwickler daran. Sprich: kann ich in meiner Anwendung ein OpenOffice Dokument integrieren und die Formatierung fernsteuern?

Unter KDE wäre das dann wohl dcop, wenn ich mich nicht irre. Soviel ich weiss wird das dann bei KDE4 (das noch ein paar Monate weit weg ist und nach Release wohl erst mal noch etwas Pflege bedürfen wird ;)) durch dbus ersetzt.
OpenOffice bäckt da aber soviel ich weiss seine eigenen Brötchen.



Ich entwickle hauptsächlich kaufmännische Anwendungen. Welche Sprachen würden sich hier empfehlen?


Also ich hab ja noch nie eine kaufmännische Anwendung entwickelt - entsprechend, keine Ahnung. ;)



Wenn ich das richtig verstanden habe, hängt die Wahl des GUI Frameworks von dem betreffenden Windows Managers. Heißt dass, das meine Applikation entweder unter KDE oder GNOME läuft aber nicht beides?

Also erst mal: KDE und Gnome sind Desktop-Umgebungen und *keine* Windowmanager. Beide haben einen Windowmanager dabei (kwin respektive metacity) und einen Haufen anderes Zeugs.
Daneben gibts noch einen Haufen andere Windowmanager.

Alle Applikationen laufen unter allen Windowmanagern und Desktops. Der Windowmanager tut nur das Rändchen mit den Knöpfchen zeichnen (manche zeichnen auch Rändchen ohne Knöpfchen - ganz nach Wunsch).

Das ganze ist eine Frage der Integration: Auf KDE sieht eine Anwendung die mit Qt und den KDELibs gemacht ist passender aus. Auf Gnome eine Anwendung mit Gtk und den Gnome Libs...



Wie sieht es mit Java aus? Wird die Linux Version zeitnah von Sun gepflegt?

Ja, mittlerweile siehts gut aus. Erst recht seit Sun Java GPL lizenzieren will. Teile davon gibts schon - der Rest soll dieses Jahr folgen.


Sehen die Anwendungen Linux-like aus oder haben die eine eigene GUI? Ich habe mich vor drei Jahren gegen Java für dot Net entschieden, weil die Applikationen damals nicht nativ (windowslike) ausgesehen hatten.

Solange du Swing verwendest haben die immer noch ihr eigenes LNF. Gibt zwar ein Gtk-LNF von Sun, aber das überzeugt mich nicht so. Gibt auch andere passendere. Schlussendlich aber nicht dasselbe wie native.

Du kannst auch "richtige" Qt/Gtk Programme mit Java entwickeln wenn du willst d.h. Java gegenüber C/C++/Python aus irgend einem Grund bevorzugst - Bindings gibts.



Wie steht es mit Performance der Java Applikationen aus?

Im Vergleich mit...?
Grundsätzlich eher Speicherfressend und eher etwas langsamer. Die in den jeweiligen Desktop integrierten Anwendungen profitieren ungemein davon dass alle benötigten Bibliotheken schon geladen sind, wenn man sie startet - da hat Java das Nachsehen.



Welche IDEs soll ich mir anschauen?

Kommt drauf an was du programmieren willst... - Eclipse für Java, Emacs, Vi, KDevelop...



Ich weiß, Fragen über Fragen. Falls es aber keine große Mühe machen würde, wäre ich froh wenn mir jemand helfen würde sich einen Überblick zu verschaffen.


Wenn du deine "Brötchen" damit verdienst ist das schlauste wohl was richtung Cross-Plattform zu wählen; also Java, Qt oder so. Damit hast du mehr Kundenpotential als mit reinen Linuxanwendungen. Zumindest im GUI-Anwendungsbereich.

MfG Peschmä

Christoph
23-01-2007, 09:52
Wenn es um eine kommerzielle Desktop-Anwendung geht, dann macht eine Entwicklung nur für Linux wohl nicht so viel Sinn, sondern Du solltest von vorneherein auf Plattformunabhängigkeit achten und sowohl für Windows, Linux und MacoSX entwicklen.

Als GUI-Toolkits würde ich da Qt oder WxWidgets empfehlen. Beide bieten auf jeder Plattform natives Look&Feel.

Was die Kommunikation mit anderer Software angeht, da gibt es unter MacOSX AppleScript und unter Linux nur Lösungen auf Desktop-Umgebungsebene (KDE, Gnome), die also nicht vorausgesetzt werden können. In jedem Fall würdest Du Dich dann aber wie unter Windows von bestimmten Versionen bestimmter Anwendungssoftware abhängig machen. Da würde ich von abraten, aber das musst Du selber wissen. Auch unter Windows würde ich z.B. mit MS Office mich auf den Datenaustausch z.B. per DDE beschränken und nicht mit OLE,COM oder wie auch immer das jetzt wieder heißt (ändert sich alle 3 Jahre) rumhampeln.

anda_skoa
23-01-2007, 17:32
Auf der Suche nach geeigneten Literatur im Internet haben sich leider einige Fragen aufgetan. Mein erster Eindruck ist (und hier kann ich mich auch irren) dass es unter Linux fast alles an Software gibt, nur das jeder Softwarehersteller sein eigenes Süppchen kocht.

Teilweise. Manchmal auch aus dem Grund, daß der Hersteller nicht ausreichend über vorhandene Möglichkeiten Bescheid weiß.



Welche Mechanismen gibt es unter Linux die man mit COM vergleichen könnte. Um eins klarzustellen: COM ist [zensiert] aber es macht die Windowsentwicklung ziemlich schnell.

Sowas gibt es derzeit nicht, d.h einbetten wird meistens über XEmbed gemacht und für Kommunikation zwischen Applikationen beginnt sich D-Bus zu etablieren.


Sprich: kann ich in meiner Anwendung ein OpenOffice Dokument integrieren und die Formatierung fernsteuern?

OpenOffice hat ein Objekt Modell genannt UNO, das über Bindings zu einigen Sprachen verfügt.
Die Stadt München macht damit ihr "Wollmux", ein System zur Automatisierung von Abläufen rund um Dokumente (in ihrem Fall mittels der Java API wenn ich mich richtig erinnere)



Ich entwickle hauptsächlich kaufmännische Anwendungen. Welche Sprachen würden sich hier empfehlen?

Ich denke da liegt in erster Linie an deinen Preferenzen. Wenn du C# als Möglichkeit beibehalten willst, kannst du ja auch unter Windows schon mal C# mittels Mono ausprobieren, Mono unter Linux sollten den selben Leistungsumfang haben.

Ciao,
_

RHBaum
06-02-2007, 09:45
Wenn Deine Applicationen in der Breite genutzt werden sollen, wuerd ich Dir auch raten mehr auf die nativen Techniken zu setzen ....

Der Vorteil von Windows, das es ueberall COM gibt, gibts unter linux nicht.
Corba iss nen Moloch, viel zu kompliziert fuer die meisten anwendungen
DCOP nicht ueberall eingesetzt, kann man zwar nachinstallieren, was aber nicht ueberall mit Freude gesehen wird
D-Bus muss auch installiert werden .... keine Ahnung ob das auf alle Distries geht

Was jede Distrie aber kann ist:
- TCP/IP
- daemons laufen lassen
- shared files
- Mehrere Formen von IPC
....

Genau so wie es kaum nen Standard unter den Applicationen gibt. Wo unter windows Excel ne hohe Marktdurchdringung hat, macht unter Linux jeder was er will.
Excel iss auch nen kommerzielles Produkt, OO nicht (Staroffice schon). wenn sich ploetzlich schnittstellen Techniken aendern, siehst da ziemlich alt aus. MS tut sich bei sowas eh schwerer, da ne ganze Menge Kunden Ihnen dann die Hoelle heiss machen wuerden. Ausserdem vergraulst potentielle Kunden wenn dich auf OO festlegst ....

Besser irgendwelche Standard Formate generieren und dokumentieren, das andere fuer ihr Lieblingsprogramm die anpassungen vornehmen koennen. Und wenn OO dein Bevorzugtes Bueroprogramm ist, kannst da die notwendigen Tools mit dazuliefern.
Unter Linux tickt halt vieles anders als unter windows, und vieles kann man nicht so "komfortabel" machen wie dort, dafuer gibts unter Linux mehr freiheiten und die User/Admins sind etwas belastungsfaehiger

Ciao ...

Lin728
10-02-2007, 18:16
Es kommt natürlich draufan was genau du für Anwendungen machst, aber für mich persönlich hat Java wunder vollbracht was Produktivität angeht.

Ich schätze die Produktivität von Java und C# ziemlich gleich ein, natürlich gibts eine Umstiegshürde, dafür bist du mit Java ziemlich auf der "sicheren Seite", speziell seit Java opensourced wird.
Keine dll/so-Hell, keine inkompatiblen APIs/ABIs und keine abstrusen/kryptischen Programmiermodelle (glib).

Es soll unter Linux sogar toolkits (GTK) geben für die es lange nicht mal Performance-Regressiontests gab und welche noch immer nicht diesbezüglich getestet werden vor einem Release. Ich kanns nicht lassen, aber demgegenünber hat Java eine sehr hohe Qualität (mit der Zeit erreicht).