Plattformunabh�ngige Softwareentwicklung

ArticleCategory: [Choose a category, translators: do not translate this, see list below for available categories]

Software Development

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in de Michael Tschater

AboutTheAuthor:[A small biography about the author]

Michael besch�ftigt sich haupts�chlich mit hardwarenaher Software-Entwicklung (Firmware). Bei seinem aktuellen Projekt muss zus�tzlich eine Strategieentscheidung �ber eine Entwicklungsumgebung getroffen werden, mit der zuk�nftig ein Front-End zum Ansteuern seiner Firmware programmiert werden soll.

Abstract:[Here you write a little summary]

Nahezu alle Ger�te in der Industrie lassen sich heutzutage �ber ein Netzwerk steuern. Die Bedienoberfl�che l�uft dabei auf Standard-Hardware und arbeitet als reiner Client, der zeitunkritisch Daten sendet (z.B. Initialisierungsparameter) und empf�ngt (z.B. Me�ergebnisse). Im folgenden Schaubild ist die hier angesprochene Kommunikation gr�n gekennzeichnet.

[gui frontend]
Bei Softwareprojekten stellt sich vielfach die Frage, welche Betriebssysteme unterst�tzt werden sollen. W�hrend der Leser dieses Artikels wohl in Richtung Linux tendieren d�rfte, werden aber auch andere Betriebssysteme (haupts�chlich Windows) gefordert. Prinzipiell spielt das verwendete Betriebssystem f�r den genannten Anwendungsfall keine gro�e Rolle, es mu� lediglich gew�hrleistet sein, da� der Benutzer intuitiv in gewohnter Weise zu den gew�nschten Ergebnissen kommt.

Der folgende Artikel soll aufzeigen, dass es keine Entscheidung f�r eine einzelne Plattform geben muss, sondern dass es ohne weiteres m�glich ist Software zu schreiben, die sich auf mehreren Betriebssystemen �bersetzen l��t. Als Zielplattform beschr�nkt sich der Artikel auf Standard PCs mit Linux und Windows. Es sollte auch m�glich sein die erstellten Anwendungen auf einem Mac unter MacOSX zu �bersetzen, dies kann aber aus Mangel an Hardware nicht untersucht werden.

ArticleIllustration:[One image that will end up at the top of the article]

[Illustration]

ArticleBody:[The main part of the article]

Einleitung

Bei betriebssystemunabh�ngigen Bibliotheken unterscheidet man zwei Ans�tze zum Darstellen von Steuerelementen in Dialogen:
  1. Native Bibliotheken: F�r die Darstellung von Elementen werden die entsprechenden Routinen des Betriebssystems genutzt. Dadurch ist gew�hrleistet, dass alle Steuerelemente aussehen wie in den Standard-Applikation dieses Betriebssystems. Eine native Bibliothek stellt Steuerelemente unter Linux anders dar als unter Windows 2000 oder Windows XP.
  2. Die zweite M�glichkeit ist ein entsprechendes Look&Feel selbst zu programmieren, d.h. s�mtliche Steuerelemente werden von der Bibliothek gezeichnet und sehen unter allen Betriebssystemen gleich aus.
Neben den technischen Merkmalen der Bibliotheken spielen in der Praxis noch weitere Faktoren eine Rolle, die ebenfalls verglichen werden sollen:
Im konkreten Fall wird auf einen weiteren Punkt Wert gelegt, der jedoch nicht f�r alle Projekte zutreffen wird:
Stellt man die Bibliotheken in einem Schichtenmodell dar, ergibt sich folgendes Bild:

layer-model

Programmiersprachen

Das erste Auswahlkriterium ist die Programmiersprache. Hier bieten sich bereits mehrere M�glichkeiten auf die im Anchluss konkret eingegangen wird:
  1. C/C++ Bibliotheken.
  2. Java
  3. Kylix
  4. Smalltalk
  5. Mozilla
Die Alternativen zu C und C++ werden etwas ausf�hrlicher angesprochen, da sie auch unter Software-Entwicklern weniger bekannt sind.

Eine Beispielanwendung

Um die einzelnen Softwarepakete praktisch vergleichen zu k�nnen wird mit allen Bibliotheken eine Beispielanwendung erzeugt. Die implementierte Anwendung verf�gt �ber keinerlei Funktionalit�t, zeigt aber die wichtigsten Steuerelemente. F�r die Windows Seite wird zudem eine reine Windows Software (Visual C++ 6.0, MFC Klassenbibliothek) erzeugt, an der sich die anderen Pakete bez�glich des Look&Feels messen m�ssen. Als Linux Distributionen kommen RedHat Fedora Core 2 und Debian 3.0 zum Einsatz.

Windows 2000 Screenshot Windows XP Screenshot

Windows 2000 und Windows XP Screenshot (Quellcode f�r Visual C++ hier).

C/C++ Bibliotheken

Trolltech Qt

Qt ist eine Klassenbibliothek der norwegischen Firma Trolltech f�r die plattform�bergreifende Programmierung unter C++. Der Linux Windows Manager KDE basiert auf dem Qt Paket. Urspr�nglich wurde Qt unter einer Lizenz vertrieben, die f�r viele Linuxanwender nicht akzeptabel war. Aus diesem Grund wurde die GTK+ Bibliothek entwickelt, die Grundlage f�r den Gnome Windows Manager ist. Inzwischen ist sowohl die Linux- als auch die MacOS-Version unter der GPL inklusive Quelltexten verf�gbar, Qt f�r Windows wird nach wie vor kommerziell vertrieben. Zur Evaluaierung kann eine zeitlich befristete Testversion von der Webseite heruntergeladen werden, dabei wird unterschieden zwischen Evaluierungen f�r anschlie�ende kommerzielle Nutzung und Evaluierung f�r akademische Zwecke. Im folgenden wird auf die kommerzielle Evaluierungsversion eingegangen, die eine Registrierung erfordert.

Neben den Versionen f�r Windows, Linux (Unix) und Mac ist eine embedded Version verf�gbar, die auf embedded Linux Varianten l�uft und eine schlankere Fensterverwaltung bietet.

Unter Linux verl�uft die Installation wie erwartet v�llig problemlos. Im Programmpaket enthalten ist der GUI Generator Qt Designer. Die enthaltene umfangreiche Dokumentation gef�llt durch eine detaillierte Beschreibung von Beispielprojekten, einem Kapitel zum Schnelleinstieg, sowie einer Klassen�bersicht. Der Qt Designer ist leider keine komplette Entwicklungsumgebung, f�r die Code-Generierung muss eine Shell bem�ht werde. Als Ouput des GUI Generators erh�lt man eine XML Beschreibung der erstellten grafischen Oberfl�che. Aus dieser Beschreibung wird �ber das Qt-Tool qmake ein g�ltige Makefile erzeugt. Das Makefile erzeugt aus der Oberfl�chen-Beschreibung zun�chst C++ Quellcode-Dateien (Qt-Tool: uic) und ruft anschlie�end den Meta Object Compiler (Qt-Tool: moc) auf, der Qt spezifische Spracherweiterungen in C++ Quellcode umsetzt (z.B. Signal-Slot-Mechanismus). Erst danach kann ein Standard make aufgerufen werden.

M�chte man die Source-Files von Hand generieren ist folgende Sequenz n�tig (Ausgangsbasis ist MyDialog.ui):
Bei der Installation unter Windows ben�tigt das Toolkit einen Benutzer- und Firmennamen sowie eine Seriennummer. Diese Daten werden von Trolltech per Email nach der Registrierung mitgeteilt. Wider Erwarten l�uft die Installation auf den Testsystemen nicht reibungslos ab. Eine Windows 2000 Installation mit Visual C++ 6.0 Entwicklungsumgebung wird zwar korrekt erkannt, dem Wizard gelingt es aber nicht, die Beispielprojekte zu �bersetzen und die Installation muss abgebrochen werden. Auf einem zweiten System mit Windows 2000 wird eine Visual C++ 5.0 Umgebung erst gar nicht erkannt. In beiden F�llen muss also Hand angelegt werden um zu einem lauff�higen System zu gelangen. Wie bei der Linux Version wird auch unter Windows die Entwicklungsumgebung Qt Designer mitgeliefert. Die Dokumentation ist offensichtlich die gleiche wie unter Linux. Die Windows spezifischen Informationen gehen etwas unter. So muss der Visual C++ Programmierer intensiv suchen, um die wichtigen Zeilen "For Visual Studio users, qmake can also generate '.dsp' files, for example: qmake -t vcapp -o hello.dsp hello.pro" zu finden.

qt linux qt win
Linux und Windows 2000 Screenshot (Quellcode f�r QtDesigner hier).

�bersicht �ber Qt

Name:
Trolltech Qt
Version:
3.3.2
Betriebssysteme:
Linux, Win32, MacOS, Solaris, IRIX, AIX, HP-UX
Programmiersprache:
C++
Lizenz:
GPL oder propriet�re Lizenz (kommerziell)
Vorteile:
  • Basisbibliothek f�r den KDE Windows Manager unter Linux
  • Installationspakete in allen Linux Standard-Distributionen vorhanden (Installation sehr einfach)
  • generische Controls unter Windows
  • M�chtige Entwicklungsumgebung(en)
  • bew�hrt
  • Migrationsunterst�tzung f�r Win32 MFC Anwendungen (Qt/MFC Migration Framework) erm�glicht das schrittweise Umsetzen von MFC Quellcode.
Nachteile:
  • evtl. Lizenzkosten (teuer)
  • Evaluierungssoftware l��t sich unter Windows nicht fehlerfrei installieren
Entwicklungsumgebung:
z.B. QtDesigner, KDevelop
WWW: http://www.trolltech.com
Dokumentation:
Manuals, Tutorials, Mailing Listen
z.B. http://doc.trolltech.com/3.3/index.html
Referenzprojekte:
  • KDE Desktop (Default z.B. bei SuSE)
  • Opera Browser
  • Photoshop Album
Verbreitung:
sehr gro�e Verbreitung

wxWidgets

Seit mittlerweilen 12 Jahren ist das wxWidgets Toolkit verf�gbar, jedoch erst vor wenigen Monaten bekam das Paket seinen heutigen Namen. Der bis dahin verwendete Name wxWindows wurde nach "Gespr�chen" mit Microsoft aufgegeben. wxWidgets verf�gt �ber eine riesige Sammlung an Klassen f�r alle Bereiche. Neben der m�chtigen Dokumentation sind sehr viele Beispielanwendungen verf�gbar. Die Liste der Referenzanwendungen macht deutlich, dass es hier um ein ausgereiftes Softwarepaket handelt.

Die Programmierung erfolgt in C++ und ist �hnlich der Visual C++ Programmierung unter Windows. Ein Umstieg d�rfte hier die geringsten Probleme verursachen.

Nach der Installation der Version wxWindows2.4.2 unter RedHat Fedora Core 2 treten beim �bersetzen der Beispielprogramme Fehler auf. Die Ursache der Fehler liegt in GTK+ Aufrufen, die in der von RedHat gepatchten Version von GTK+ privat und somit nicht zugelassen sind. Hier zeigt sich, das die Dynamik der Open Source Gemeinde durchaus auch Probleme verursachen kann. Die Probleme sollten aber nicht �berbewertet werden. Mit der Installation einer Standard GTK+ Bibliothek d�rfte alles glatt laufen. F�r die weitere Untersuchung im Rahmen dieses Artikel wird stattdessen auf die Debian Distribution Version 3.0 gewechselt. Hier funktioniert alles auf Anhieb.

Ebenfalls problemlos verl�uft die Installation unter Windows. Das Generieren der Bibliotheken und Beispielprogamme funktioniert musterg�ltig.

wxWidgets on Linux screenshot wxWidgets on Windows screenshot

Linux und Windows 2000 Screenshot (Quellcode hier).

�bersicht �ber wxWidgets

Name:
wxWidgets
Version:
2.4.2
Betriebssysteme:
Linux, Win32, embedded Devices
Programmiersprache:
C++
Lizenz:
LGPL
Vorteile:
  • einfache Handhabung (viele Beispiele).
  • sehr gute Dokumentation.

Nachteile:
  • Probleme bei der Kombination Fedora Core 2 - wxWindows2.4.2
Entwicklungsumgebung:

WWW: http://www.wxwidgets.org
Dokumentation:
Manuals, Tutorials, Mailing Listen, Wiki
z.B. http://wiki.wxwidgets.org
Referenzprojekte:
AOL Communicator
Verbreitung:
geringe Verbreitung


GTK+ (mit gtkmm)

Die Abk�rzung GTK steht f�r "The GIMP Toolkit". Die beiden bekanntesten Projekte sind der Gnome Windows Manager, der in allen Standard Linux Distributionen enthalten ist, und die professionelle Grafikanwendung GIMP. Gnome ist neben KDE (siehe Qt) die zweite gro�e Desktop-Umgebung unter Linux. Sie wird von vielen Distributionen als Standard-Umgebung installiert. Mit Einf�hrung der Version 2 von GTK+ ist das Look&Feel wesentlich verbessert worden.

Eine Besonderheit von GTK+ ist, dass es komplett in C implementiert wurde. Konsequenterweise erzeugt der GUI-Builder glade2 ebenfalls C-Code. Durch Verwendung von gtkmm (fr�her GTK--) l��t sich aber ebenfalls in C++ programmieren.

Ganz im Gegensatz zum professionellen Auftreten von GTK+ f�r Linux scheint es mit 'GTK+ for Win32' nicht weit her zu sein. Klickt man auf der GTK+-Hauptseite auf diesen Link erscheint sofort die Warnung: "The program(s) might crash unexpectedly or behave otherwise strangely. (But of course, so do many commercial programs on Windows.) The stability seems to depend a lot on the machine, display drivers, other software installed, and whatnot." (Stand 2004-09-06). Der wagemutige Software-Entwickler klickt nat�rlich dennoch auf die Download Seite und bekommt eine lange Liste an einzelnen Softwarekomponenten zum Download angeboten. Ein zusammenh�ngendes Paket sucht man vergebens. Stattdessen liest man die Anweisung, eine Reihe von Softwarekomponenten zu installieren und gegebenfalls, wenn bestimmte Sachen fehlen, die Download-Seite eben noch einmal zu besuchen. Dies passt zur Aussage der 'GTK+ for Windows' - Webseite: "You are expected to be pretty experienced to be able to use GTK+ in your own programs. This isn't Visual Basic.".� Nach einer Installation der Basiskomponeneten und einem erfolglosen Versuch eine Beispielanwendung zu starten, d�rfte den meisten Entwicklern allm�hlich die Lust auf eine tiefere Einarbeitung vergangen sein. Die v�llig unprofessionelle Aufmachung der 'GTK+ for Win32' Einzelkomponenten (von einem Paket kann keine Rede sein) disqualifiziert das Software-Paket und jeglicher (professionelle) Einsatz ist ausgeschlossen.

GTK+ screenshot
GTK+ Screenshot f�r Linux (Quellcode f�r glade2 hier)

�bersicht �ber GTK+

Name:
GTK+ - The GIMP Toolkit
Betriebssysteme:
Linux, Win32
Programmiersprache:
C (C++ mit gtkmm)
Lizenz:
LGPL
Vorteile:
  • Basisbibliothek f�r den Gnome Windows Manager unter Linux
  • Installationspakete in allen Standard-Distributionen vorhanden (Installation sehr einfach)
  • generische Controls unter Windows
  • bew�hrt (unter Linux)
Nachteile:
  • Win32-Implementierung ist unhandlich l�uft nicht stabil (Stand 09-2004)
Entwicklungsumgebung:
z.B. glade2 (GUI Builder), Anjuta
WWW: http://www.gtk.org
Dokumentation:
Manuals, Tutorials, Mailing Listen
z.B. http://developer.gnome.org/doc/API/2.0/gtk/index.html
Referenzprojekte:
  • Gnome Desktop
  • GIMP
  • Gnumeric
Verbreitung:
Linux: sehr gro�e Verbreitung, Windows: sehr geringe Verbreitung


FLTK

Beim FLTK Toolkit (Fast, Light Tool Kit) handelt es sich um ein weitestgehend unbekanntes Paket, dass als Nachfolger von XForms implementiert wurde. Auf der Web-Seite bekommt man die kompletten Sourcen zum Download angeboten. Die Gr��e von 2.3MB (.tar.gz, Linux) bzw. 3MB (.zip, Win32) macht dem Namen alle Ehre. Unter Linux erfolgt die Installation problemlos: auspacken und "make" aufrufen, fertig. Danach stehen dem Benutzer die Bibliotheken, Beispielanwendungen, der GUI-Builder "fluid" und ein Programmierhandbuch zur Verf�gung. Dass bei dieser Gr��e die Anzahl der zur Verf�gung gestellten Klassen geringer ist als bei den Schwergewichten Qt und wxWindows d�rfte klar sein. Die enthaltenen Klassen decken den GUI-Bereich ab, d.h. Fenster, Men�s, Controls, OpenGL und Darstellung von Bildern. Klassen f�r Netzwerk-Kommunikation und �hnliches sind nicht vorhanden.

Unter Windows l�uft die Installation nicht ganz so rund. Bei Verwendung der Visual C++ Entwicklungsumgebung muss lediglich ein Hauptprojekt �bersetzt werden, dabei kommt es aber zu Problemen mit den Grafikbibliotheken. Der Einfachheit halber k�nnen diese in der Konfigurationsdatei config.h auskommentiert werden.
Eine weitere Besonderheit der Windows-Variante ist, dass sich beim Starten eines Projekts stets auch ein DOS-Fenster �ffnet, wenn die FLTK-Bibliothek in der DEBUG Variante erstellt wurde. Dies ist kein Bug, sondern ein Feature: Auf diese Art wird gew�hrleistet, dass Anwendungen die von der Konsole gestartet werden auf stderr und stdout schreiben k�nnen.

Insgesamt gesehen macht das FLTK Toolkit einen sehr durchdachten Eindruck. Die Dokumentation hebt insbesondere die geringe Gr��e der Executables (80kB f�r ein "hello world") und schlanke schnelle 2D und 3D Grafik (OpenGL/Mesa) hervor. Desweiteren wird auf eine gute Portierbarkeit hingewiesen.
Linux FLTK Screenshot
Windows FLTK Screenshot

Linux und Windows 2000 Screenshot (Quellcode hier).

�bersicht �ber FLTK

Name:
Fast Light Tool Kit
Version:
1.1.5rc3
Betriebssysteme:
Linux, Win32, MacOS
Programmiersprache:
C++
Lizenz:
LGPL
Vorteile:
  • sehr schlanke Bibliothek
  • Quellcode inklusive Dokumentation und Entwicklungsumgebung "fluid"
  • gute OpenGL Unterst�tzung (wurde nicht untersucht)
  • generische Controls unter Windows
Nachteile:
  • Installation unter Win32 (Visual C++) nicht fehlerfrei
  • fluid-Entwicklungsumgebung l�uft nicht stabil unter Windows
Entwicklungsumgebung:
z.B. fluid (GUI Builder), Eclipse
WWW: http://www.fltk.org, Download: http://freshmeat.net/projects/fltk/
Dokumentation:
Manuals, Tutorials, Mailing Listen
z.B. http://www.fltk.org
Referenzprojekte:
Verbreitung:
geringe Verbreitung; auch unter Software-Entwicklern weitestgehend unbekannt

FOX Toolkit

Das Fox Toolkit bezeichnet sich selbst als eines der schnellsten verf�gbaren Toolkits. Es verf�gt �ber eine Vielzahl von Steuerelementen und eine OpenGL Anbindung.

Die obligatorischen Test-Installationen unter Windows und Linux verlaufen problemlos. Neben Beispielprojekten ist eine ausf�hrliche Dokumentation verf�gbar. Leider fehlt bei der getesteten Version die Klassen�bersicht, die aber online eingesehen werden kann. Bei der weiteren Untersuchung leistet sich das Toolkit keine Schw�chen.

FOX screenshot

Windows 2000 Screenshot (Quellcode hier)

�bersicht �ber FOX

Name:
FOX Toolkit
Version:
1.2.9
Betriebssysteme:
Linux, Win32
Programmiersprache:
C++
Lizenz:
LGPL
Vorteile:
  • gute Dokumentation
Nachteile:

Entwicklungsumgebung:

WWW: http://www.fox-toolkit.org
Dokumentation:
Manuals, Tutorials, Mailing Listen
Referenzprojekte:
  • X File Explorer (Xfe)
Verbreitung:
geringe Verbreitung


Weitere M�glichkeiten

Neben den angesprochenen Bibliotheken sollen der Vollst�ndigkeit halber noch weitere Projekte genannt werden, auf die aber nicht eingegangen wird:

JAVA

Im Jahre 1995 stellte die Firma Sun eine neue Programmiersprache vor. Neben normalen Desktop-Computern war Java f�r Industrieger�te (Kaffemaschinen, Toaster, ...) vorgesehen. Der gro�e Durchbruch gelang aber zun�chst �ber Internet-Anwendungen (Applets) in Verbindung mit Web-Browsern. In der Zwischenzeit wird Java aber auch f�r Standalone Anwendungen verwendet, f�r die es sich durch verschiedenen Eigenschaften sehr gut eignet.

Im folgenden sollen die wichtigsten Eigenschaften von Java aufgez�hlt und kurz erkl�rt werden.

Plattformunabh�ngigkeit

Java ist plattformunabh�ngig. Java Anwendungen bestehen aus einem Bytecode, der von einer virtuellen Maschine interpretiert wird. Dadurch sind die Anwendungen auf jeder Hardware lauff�hige f�r die eine passende virtuelle Maschine existiert. Das Interpretieren durch die virtuelle Maschine bedeutet eine geringere Abarbeitungsgeschwindigkeit gegen�ber compilierter Software. Um diesen Nachteil auszugleichen sind mittlerweile Verbesserungen wie beispielsweise Just-In-Time-Compilierung (JIT) entwickelt worden, die zur Laufzeit Programmanweisungen der virtuellen Maschine in Anweisungen f�r die physaklische Maschine �bersetzt. Als Ergebnis erh�lt man hier ein angepasstes Programm im Speicher, dass ohne Interpretation schnell ausgef�hrt werden kann. Die Hotspot-Technologie f�hrt zus�tzlich eine Analyse des Laufzeitverhaltens zur weiteren Optimierung durch.

Objektorientierung�

Java ist objektorientiert. Bei der Objektorientierung lie�en sich die Entwickler der Sprache von Smalltalk inspirieren. Vermutlich aus Performance-Gr�nden sind aber dennoch primitive Datentypen vorhanden, die nicht als Objekte verwaltet werden.

Sprachsyntax

Die Sprachsyntax ist �hnlich wie bei C und C++, jedoch wurden fehlertr�chtige Inkonsistenzen nicht �bernommen. Eine Grundsatz beim Entwicklen der Sprache war, dass Java die besten Konzepte der existierenden Programmiersprachen vereinen soll.

Einige Beispiele sind:

Klassenbibliothek�

Java verf�gt �ber eine umfangreiche Klassenbibliothek: JFC (Java Foundation Class) zum Erstellen von Oberfl�chen (Durchgesetzt hat sich hier der Codename Swing).�

Sicherheit

Von einem Verifier wird Java-Code zun�chst auf strukturelle Korrektheit und Typsicherheit �berpr�ft. Ein Security-Manager� �berwacht die Zugriffe auf die Peripherie. Jegliche Sicherheitsprobleme werden �ber Exceptions zur Laufzeit gemeldet.�

Eignung f�r Projekte

Die genannten Vorteile haben Nebeneffekte, die Java nicht f�r alle Projekte sinnvoll erscheinen lassen. Diese Eigenschaften sind jedoch keine Fehler oder Schw�chen, sondern sind bewu�t nicht implementiert worden und geh�ren zur Sprachphilosophie.

Dazu geh�ren z.B.:

Java Development Kit (JDK)

Das Java Development Kit kann von der Sun Internetseite heruntergeladen werden und umfasst eine Basisausstattung an Applikationen, Java-Klassen und die Online-Dokumentation. Bei den Anwendungen handelt es sich um einen Compiler, einen Debugger, einen Appletviewer, sowie verschiedenen Hilfsprogrammen, die zum Erstellen und Testen von Java Anwendungen und Java Applets notwendig sind. Die Ausstattung bietet jedoch nur das N�tigste, der Compiler etwa muss von der Kommandozeile aus bedient werden. Desweiteren ist im Paket das Java Runtime Environment (JRE, enth�lt die virtuelle Maschine) enthalten, die zum Ausf�hren des Bytecodes notwendig ist. Die Dokumentation umfasst schlie�lich die Beschreibung der kompletten API.

JHelloWorld

Unter Benutzung des Standard JDK soll die obligatorische Hello-World Anwendung implementiert werden:

1. Schritt: Erzeugen des Quellcodes.
sh>vi Helloworld.java

public class HelloWorld {
public static void main (String[] args) {

System.out.println("Hello World!");
}
}
Dateiname und Klassenname m�ssen �bereinstimmen.

2. Schritt: �bersetzen.
sh>javac Helloworld.java

3. Schritt: Anwendung unter Verwendung der virtuellen Maschine starten.
sh>java Helloworld

JavaScript und Java

F�lschlicherweise werden zwischen JavaScript und Java oft Gemeinsamkeiten vermutet. Dies ist grunds�tzlich falsch. JavaScript wurde als Skript-Sprache zur Einbettung in HTML urspr�nglich von der Firma Netscape entwicklet. Es ist keine eigenst�ndige Programmiersprache und ist vom verwendeten Browser abh�ngig. Der Name JavaScript ist also mehr als Marketing-Gag zu verstehen.

Normierungsversuche

Bisher sind s�mtliche Normierungsversuche der Sprache Java gescheitert. Grund hierf�r d�rfte sein, dass Sun die alleinige Kontrolle �ber die Weiterentwicklung des Java-Standards nicht aus der Hand geben m�chte.

Dekompilierung

Ein Wunder Punkt von Java ist die Tatsache, dass Anwendungen dekompiliert werden k�nnen. Trotz aller Sicherheitsmechanismen kann, zumindest im Augenblick, der Bytecode wieder in Source Code umgewandelt werden. Da der Java Compiler Bytecode f�r einen virtuellen Prozessor erstellt, m�ssen im Gegensatz zum klassischen Assembler-File weitere wichtige Informationen enthalten sein, die die Dekompilierung deutlich vereinfachen. Dies ist vor allem dann kritisch, wenn spezielles Wissen im Source Code steckt.

Wundersprache oder kurzfristiger Hype?

Nachdem das Java Konzept anf�nglich f�r die ultimative L�sung f�r plattformunabh�ngige Programmierung gehalten wurde, hat sich die Euphorie wieder gelegt. Neben Versionskonflikten zwischen verschiedenen virtuellen Maschinen wird immer wieder auf die Geschwindigkeit verwiesen. Viele Firmen sind nach einer Versuchsphase wieder zur Standard-C++ Programmierung zur�ckgekehrt. Dies wird z.B. von den wxWidgets Entwicklern best�tigt, die von wieder steigender Anzahl von Downloads berichten.

Eine interessante Webseite in diesem Zusammenhang ist: http://www.internalmemos.com/memos/memodetails.php?memo_id=1321. Hier sprechen sich (angeblich) Sun Mitarbeiter gegen Java aus.

Grafische Oberfl�chen mit Java

Standardm��ig bietet Java 2 M�glichkeiten zur Programmierung von grafischen Oberfl�chen:
  1. Zum einen ist eine umfangreiche Klassenbibliothek enthalten (JFC,� Swing), die s�mtliche Arten von Steuerelementen zur Verf�gung stellt. Im Gegensatz zu den bisher vorgestellten Toolkits werden wird hier keine Betriebssystemfunktionalit�ten verwendet, sondern s�mtliche sogenannten Widgets werden durch Java Befehle gezeichnet. Dadurch ist es m�glich das Look&Feel der Anwendung zur Laufzeit umzuschalten. Die im Anschlu� folgenden Screenshots zeigen die identische Anwendung, die von dieser M�glichkeit Gebrauch macht.
  2. Zum anderen gibt es die sehr rudiment�ren AWT Funktionen. Bei AWT fehlen komplexere Oberfl�chenelemente wie z.B. B�ume, weswegen es f�r die meisten Anwendungen unbrauchbar ist.

Java Metal screenshot Java Motif screenshot
Java Gtk screenshot

Java Screenshots im Metal-, Motif- und� GTK+ Look & Feel (Quellcode hier)

Java on Win2k here.
Java on WinXP here.

Java Screenshot mit Windows Look & Feel unter Windows 2000 und Windows XP (identischer Sourcecode)

Da alle g�ngigen Browser Java unterst�tzen, k�nnen Anwendungen auch als sogenannte Applets im Browser laufen. Diese Technologie kann z.B. im Embedded Bereich genutzt werden. Der Java-Bytecode wird auf Anforderung �ber einen Webserver an die Clients (Browser) geschickt, die die Anwendung auf dem Host ausf�hren. Daraus resultiert dass der Webserver lediglich �ber gen�gend Speicherplatz zum Ablegen der Applets verf�gen muss, die Rechenleistung spielt keine Rolle, da der Code in der virtuellen Maschine des Aufrufers l�uft.
Der folgende Screenshot zeigt die identische Anwendung als Java-Applet in eine Webseite eingebunden.


Java applet screenshot
Java Screenshot mit der Beispielanwendung als Applet (Beispielcode hier)

SWT und Eclipse

Obwohl Java �ber �hnliche Eigenschaften zur Darstellung von grafischen Steuerlementen verf�gt wie andere Toolkits, gab es unter Software-Entwicklern in der Vergangenheit immer wieder unzufriedene Stimmen. Als gr��te Probleme wurde der mangelnde Funktionsumfang und geringe Geschwindigkeit von Swing genannt.
Als Alternative wurde von IBM das Standard Widget Toolkit (SWT) entwickelt, das unter Java die Verwendung von nativen Elementen erlaubt. Ein Referenzprojekt ist die ebenfalls von IBM entwickelte IDE Eclipse, die eine offene Plattform f�r Entwicklungswerkzeuge darstellt. Sowohl Toolkit als auch Entwicklungsumgebung sind freie Software.

Abk�rzung in Zusammenhang mit JAVA

JDK (Java Development Kit) Das komplette Java Paket zum Erstellen von Java� Anwendung bestehend aus Anwendungen, Java Klassen und Dikumentation.
JRE (Java Runtime Environment)
enth�lt die virtuelle Maschine und ist zum Benutzen von Java Anwendungen notwendig.
J2ME (Java 2 Micro Edition)
Java f�r Ger�te mit geringen Ressourcen.
J2SE (Java 2 Standard Edition)
Java f�r den Desktop (Linux, Windows, ...)
J2EE (Java 2 Enterprise Edition)
Java zum Erstellen mehrschichtiger Client-/Server-Anwendungen sowie von Java Servlets und Java Server Pages.
JFC (Java Foundation Class)
Klassensammlung zum Erstellen von Oberfl�chen (-> Swing)

�bersicht �ber JAVA

Name:
JAVA 2 PLATFORM STANDARD EDITION DEVELOPMENT KIT 5.0
Version:
5.0
Betriebssysteme:
  • Linux, Windows, Solaris (SUN)
  • Linux, Windows, AIX, Solaris (evtl. MacOS, OS/2, FreeBSD, Amiga, BeOS) (Jikes -> IBM)
Programmiersprache:
JAVA
Lizenz:
propriet�re Lizenz (SUN)
Vorteile:
  • robuste Sprache (viele Fehlerquellen sind durch das Sprachkonzept ausgeschlossen)
  • gro�e Anzahl von leistungsf�higen Tools wie z.B. Eclipse
Nachteile:
  • propriet�re Sprache, alleinige Kontrolle durch SUN
  • virtuelle Maschine der Zielplattform muss passen
  • langsame Ausf�hrungsgeschwindigkeit
  • SWT aufw�ndiger zu programmieren als Swing
Entwicklungsumgebung:
z.B. Eclipse
WWW: http://java.sun.com
Dokumentation:
Manuals, Tutorials
Allgemein: http://java.sun.com/j2se/1.5.0/docs/, http://www-e.uni-magdeburg.de/mayer/java.html
SWT: http://eclipse-wiki.info/SWT, http://www.java-tutor.com/java/swtlinks.html
Referenzprojekte:

Verbreitung:
sehr gro�e Verbreitung



Kylix

Kylix ist eine Cross-Platform Entwicklungsumgebung f�r Linux und Windows. Mit Hilfe der Borland CLX Bibliothek (Component Library for Cross-platform) k�nnen Anwendungen unter Delphi und C++ erstellt werden, die dann auf beiden Plattformen laufen. Laut einem Bericht auf der Wikipedia-Homepage (Link hier) ist diese Bibliothek aber nichts anderes als ein Wrapper f�r die bereits vorgestellte Bibliothek Qt. Zus�tzlich handelt es sich bei der Kylix IDE offenbar um eine auf WINE (Link hier) basierende nicht-native Linuxanwendung, deren erstellten Executables gegen libwine gelinkt werden m�ssen. Wenn man dies ber�cksichtigt d�rfte der Einsatz von Kylix f�r C++-Entwickler wenig Sinn machen, da hier der Einsatz von Qt mit einer freien IDE wesentlich geradlinige ist.

�bersicht �ber Kylix

Name:
Kylix
Version:
3
Betriebssysteme:
Windows, Linux
Programmiersprache:
Delphi, C++
Lizenz:
propriet�re Software
Vorteile:
  • Entwicklung unter Delphi und C++
Nachteile:
  • Lizenzkosten
Entwicklungsumgebung:
Kylix
WWW: http://www.borland.de/kylix
Dokumentation:

Referenzprojekte:

Verbreitung:
geringe Verbreitung




Smalltalk

Ein Klassiker unter den Programmiersprachen ist Smalltalk. In den Jahren 1969/70 von Xerox entwickelt, ist die Sprache bis heute ein Musterbeispiel f�r v�llige Objetorientierung. In Smalltalk ist alles ein Objekt, es gibt keine einfachen Datentypen. Smalltalk arbeitet wie Java und .Net (siehe unten) mit einer virtuellen Maschine. Die Sprachsyntax orientiert sich an der nat�rlichen Sprache, unterscheidet sich aber deutlich von anderen existierenden Programmiersprachen. Smalltalk wurde bereits damals mit einer grafischen Oberfl�che programmiert, weshalb man sagt, dass Smalltalk seiner Zeit 10-15 Jahre vorraus war. Es ist m�glich zur Laufzeit das Kernsystem zu �ndern und diese Modifikationen sind im Anschlu�, ohne dass ein Neustart n�tig ist, g�ltig. Smalltalk war relativ erfolgreich bis Java aufkam.

Das obligatorische 'Hello world !' unter Smalltalk:
Transcript show: 'Hello world !'; cr.

Smalltalk wird auch heute noch f�r Projekte eingesetzt. Die am weitesten verbreitete Variante ist Smalltalk-80 (Normierung von 1980). Eine leistungsf�hige Entwicklungsumgebung ist beispielsweise Squeak.

�bersicht �ber Smalltalk

Name:
Smalltalk (z.B. Squeak)
Version:
3.6
Betriebssysteme:
Windows, Linux, Solaris, MacOSX, Darwin
Programmiersprache:
Smalltalk
Lizenz:
Open Source
Vorteile:
  • v�llig objektorientiert
Nachteile:
  • Smalltalk wird von Java verdr�ngt und hat eine deutlich kleinere Nutzerzahl
Entwicklungsumgebung:
z.B. Squeak
WWW: http://www.smalltalk.org
Dokumentation:

Referenzprojekte:

Verbreitung:
geringe Verbreitung



Mozilla

Mozilla? Ein Browser? Wie soll man mit einem Browser programmieren? Bei Mozilla handelt es sich nicht nur um einen Webbrowser, sondern zus�tzlich um ein plattform�bergreifendes Framework, das verschiedene Standards wie z.B. XUL (XML based user interface language) unterst�tzt. XUL wird verwendet um die Struktur und den Inhalt einer Applikation zu definieren. S�mtliche Dateien werden als Klartextdateien abgelegt. Mozilla unterscheidet nicht zwischen Programmen und Webseiten da diese konzeptionell sehr �hnlich sind. Folgende Zeile im Feld f�r dir URL eingegeben l��t den Browser sich selbst rendern:
chrome://navigator/content

Der folgende Code stellt im Mozilla Browser einen Button dar, der beim Anklicken ein Fenster mit dem Text "Hello World" �ffnet.
<?xml version="1.0"?>
<!-- Beispiel XUL Datei -->
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<box align="center">
<button label="Push" onclick="alert('Hello World');" />
</box>
</window>

Softwareentwicklung mit Mozilla entscheidet sich grundlegend von der klassischen Programmierung. Viele innovative Konzepte haben Einzug gefunden, wie zum Beispiel die Trennung der Anwendung von der Darstellung. So k�nnen existierende Anwendungen durch ge�nderte 'Themes' ihr Aussehen �ndern. Erfolgreiche Projekte wie der Mozilla Firefox Browser zeigen, dass es sich bei diesem Framework um eine ausgereifte und robuste Umgebung handelt.

Mozilla on Linux Screenshot here.
Mozilla on Win2k here.

Linux und Windows 2000 Screenshot (Quellcode hier).

�bersicht �ber Mozilla

Name:
Mozilla
Version:
1.6
Betriebssysteme:
Windows, Linux,
Programmiersprache:
XUL
Lizenz:
Mozilla Public License, Netscape Public License
Vorteile:
  • innovative Konzepte
  • bestehende Webstandards werden unterst�tzt (JavaScript, Stylesheets, ...)
  • Anwendungen k�nnen im Browser oder als standalone Anwendung dargestellt werden.
Nachteile:

Entwicklungsumgebung:

WWW: http://www.mozilla.org
Dokumentation:
�Manuals, Tutorials, Mailing Listen
z.B. www.xulplanet.com
Referenzprojekte:
Mozilla Firefox Browser
Verbreitung:
gro�e Verbreitung, aber selten bei Softwareprojekten eingesetzt



Microsofts Antwort

Nat�rlich hat auch Microsoft die Zeichen der Zeit erkannt und inzwischen einen eigenen Ansatz pr�sentiert. Unter dem Name .NET wurde eine Plattform entwickelt, die nicht zuletzt den Abwanderungsprozess von Software-Entwicklern zur Konkurrenzplattform Java eind�mmen soll. Bei n�herer Betrachtung finden sich auch tats�chlich viele Parallelen zwischen den beiden Konkurrenten, auch wenn diese durch unterschiedliche Namensgebung verschleiert werden. So hei�t beispielsweise das Gegenst�ck zu Javas 'Bytecode' bei Microsofts C# 'Intermediate Language' (MSIL).

Was ist .NET ?

.NET ist eine propriet�re Microsoft Technologie auf der alle weiteren Microsoft Produkte basieren sollen. Die Unterst�tzung der bisher favorisierten MFC Bibliothek f�r Visual C++ wurde im Zuge der .NET Einf�hrung eingestellt. .NET soll die Entwicklung von Netzwerk- und Internet-Anwendung vereinfachen und hat viele Ideen von Java �bernommen. Es unterst�tzt objektorientierte Programmierung und wird mit einer einzigen Klassenbibliothek geliefert, die von verschiedenen Programmiersprachen (C#, VB.NET) genutzt werden kann. Das bedeutet dass aus dem Programmcode die 'Intermediate Language' erzeugt wird, die �ber das .NET-Framework auf die Zielhardware zugreift (vgl. Java Sourcecode -> Java Bytecode -> virtuelle Maschine -> physikalische Hardware).

Zuk�nftige Windows Versionen werden mit dem .NET Framework ausgeliefert.

Was ist Visual Sudio .NET ?

Visual Studio .NET ist eine Programmierumgebung, die das Entwickeln von .NET-Software vereinfachen soll, es ist aber nicht zwingend erforderlich.

Unterschiede zwischen Visual Basic (VB) und VB.NET

Obwohl VB.NET aus Kompatibilit�tsgr�nden viele alte VB Funktionen unterst�tzt und die Sprach-Syntax beibehalten wurde, ist VB.NET eine komplett neue Programmiersprache.

Welche Programmiersprache eignet sich am besten?

Da sowohl der VB.NET Quellcode als auch der C# Quellcode in die MSIL �bersetzt werden, macht die verwendete Programmiersprache keinen Unterschied. So gibt es zum Beispiel auch keine Geschwindigkeitsunterschiede zwischen C# Code und VB.NET Code. Da der C# Compiler aber speziell f�r das .NET Framework entwickelt wurde, d�rfte er das geeignetere Tool sein.

.NET und Linux

Trotz des plattformunabh�ngigen Ansatzes wird Microsoft wohl keine Linux .NET-Variante entwickeln, weshalb sich ein Entwicklerteam um Miguel de Icaza (Ximian: Evolution) dieser Aufgabe angenommen hat. Das Open Source Paket namens Mono ist mittlerweile in der Version 1.0 verf�gbar.

�bersicht �ber .NET

Name:
Microsoft .NET-Framework
Version:
1.1
Betriebssysteme:
Windows, Linux
Programmiersprache:
C#, Windows: VB.NET
Lizenz:
propriet�re Lizenz
Vorteile:
  • zuk�nftiger Bestandteil von Windows
Nachteile:
  • propriet�re Software
  • keine Linux .NET Version verf�gbar
  • komplett neue API
Entwicklungsumgebung:
Visual Studio .NET
WWW:
Dokumentation:

Referenzprojekte:

Verbreitung:
bisher nur geringe Verbreitung



Zusammenfassung

Vor der abschlie�enden Beurteilung wird noch einmal auf die gestellte Aufgabe verwiesen: Es geht um die Entwicklung eines Front-Ends, das �ber Netzwerk-Kommunikation mit angeschlossener Hardware kommuniziert. Dabei soll der Software-Quellcode auf den Plattformen Linux und Win32 �bersetzbar sein. Die Anwendung darf sich nicht von anderer Software auf dem System unterscheiden. Durch diese Aufgabenstellung wird das Bild auf die getesteten Pakete verf�lscht und kann nicht als allgemeine Aussage gesehen werden.

Bestes Beispiel hierf�r ist das FLTK Toolkit. Hier bekommt man in einem sehr kleinen Paket ein leistungsf�higes System. Die St�rken liegen in geringer Codegr��e, guter Grafikanbindung und guter Portierbarkeit. Diese Eigenschaften machen das Toolkit f�r Projekte im Embedded- und Grafikbereich interessant. F�r die Front-End Entwicklung spielt aber eher die Anzahl der Klassen, das Handling und das Aussehen der erzeugten Anwendungen eine Rolle. Somit ist FLTK f�r diese Aufgabe eher weniger geeignet.

Eine herbe Entt�uschung f�r Software-Entwickler d�rfte das GTK+ Projekt unter Windows sein. Hier sollte die Linux Community deutlich mehr Einsatz zeigen. Mit Warnungen auf der Web-Seite gewinnt man jedenfalls kein Vertrauen. Dies ist um mehr schade, als dass das GTK+ Paket als reines Linux Paket sehr gelungen wirkt. Das Potential ist sehr gro�, die Umsetzung auf die Windows Plattform l��t aber zu w�nschen �brig.

Der Einsatz der Exoten Smalltalk und Mozilla bleibt Geschmacksache. Eine Firma, die mit selbstentwickelter Hardware Geld verdient, wird wenig Sinn f�r philosophische Ans�tze haben. Auch wenn Smalltalk die bessere objektorientierte Programmiersprache ist und wenn Mozilla-XUL-Programmierung den sowieso vorhandenen Browser noch sinnvoller erscheinen l��t, so sind diese Pakete doch keine Mainstream Produkte zur Software-Entwicklung.

Kylix f�llt bei dieser Betrachtung ebenso wie GTK+ f�r Win32 eher negativ auf. Von dem einstigen Glanz des Urprodukts Turbo Pascal ist nur wenig geblieben. Mit diesem Produkt pr�sentierte Borland in den 80er Jahren eine m�chtige IDE die sowohl auf Home-Computern wie auch auf den fr�hen PCs lief. Es war bekannt f�r seinen g�nstigen Preis und seinen schnellen Code. In der Zwischenzeit hat sich viel ge�ndert. Aus Borland wurde Inprise und dann wieder Borland. Aus Turbo Pascal wurde erst Object Pascal, dann Delphi und schlie�lich Kylix (nat�rlich mit Erweiterungen bzw. Ver�nderungen). Zumindest f�r neue Projekte d�rfte ein Einsatz heute nur noch wenig Sinn machen.

Microsoft zeigt in diesem Umfeld, dass es die Zeichen der Zeit erkannt hat. Historisch betrachtet hat der Konzern zun�chst versucht, den Java Standard mit Visual J++ zu durchsetzen. Neben den Java Standardbefehlen wurden Win32 API Zugriffe und selbst Zugriffe auf die Windows Registry zugelassen (Was der Sprachphilosphie v�llig widerspricht). Au�erdem wurden automatisch Win32 Executables erzeugt. Nach gerichtlichen Auseinandersetzungen mit Sun mu�te daraufhin bei jedem �bersetzungsvorgang ein Warnhinweis angezeigt werden, dass die erzeugten Applikationen wahrscheinlich nicht auf anderen Betriebssystemen laufen werden. Das Ende der Geschichte war das Einstellen des Java Engagements von Microsoft. Stattdessen wurde eine v�llig neue Strategie entwickelt. Mit .NET und #C wurde ein komplett neuer Standard entwickelt. Die Kombination Windows, .NET und C# sind sicherlich ein gut zusammenpassendes Paket, aber das muss man Microsoft auch f�r die ausgediente Kombination Windows mit Visual C++ und MFC Klassenbibliothek zugestehen. Der Nachteil dabei ist, dass man bedingungslos einem Anbieter ausgeliefert ist, der "seinen" Standard (hier: Windows) durchsetzen m�chte. Mit an Sicherheit grenzender Wahrscheinlichkeit wird Microsoft in absehbarer Zeit keine Umsetzungen von .NET auf andere Betriebssysteme planen. Die freie Umsetzung Mono muss ihre Praxistauglichkeit erst noch beweisen. Hier kann zu gegenw�rtigen Zeitpunkt noch kein Resumee gezogen werden, auch wenn schon erste Achtungserfolge erzielt wurden.

Ohne Einschr�nkung empfehlenswert sind somit die Pakete Qt, wxWindows und Java. Die Wahl f�llt hier schwer, da alle 3 Pakete zum Erzeugen komplexer Front-End Software taugen. Je nach Gewichtung der Punkte Support, Kosten, Einsatzbereitschaft, Programmier-Philosophie, usw. d�rften sich hier verschiedene Meinungen bilden. Die Unterschiede liegen eher im Detail, so verbietet die Java Philosophie eigentlich direkte Hardware Zugriffe. Daf�r kann es wieder bei anderen Aspekten punkten. Rein technisch gesehen k�nnen diese 3 Konkurrenten die gestellte Aufgabe problemlos meistern.

Somit bleibt nur ein subjektives Ergebnis des Autors: Als Open Source Fan wird man bei der gestellten Aufgabe wohl am ehesten zu wxWindows tendieren. Neben einem stimmigen Konzept und guter Tool Unterst�tzung sind ebenfalls ausreichend Dokumentation vorhanden.