© Holger Röder Winter 2008/2009 Programmentwicklung se Java: Kapitel 1 Überblick Programmentwicklung WS 2008/2009 Holger Röder [email protected] © Holger Röder Winter 2008/2009 Programmentwicklung se Was ist Java? Die Java-Technologie umfasst die Programmiersprache Java sowie die Java-Plattform (Laufzeitumgebung, Standardbibliothek/API etc.). Programmiersprache und Plattform treten meist gemeinsam auf! Æ eine begriffliche Unterscheidung ist selten (auch nicht im Folgenden!) Eigenschaften von Java (laut der Definition von Sun): Interpretiert Einfach Schnell Objektorientiert Parallel (multithreaded) Robust Dynamisch Sicher Dezentral Architekturneutral Portierbar 2 © Holger Röder Winter 2008/2009 Programmentwicklung se Historische Entwicklung 1991–1994: Entwicklung der Sprache Oak bei der Firma Sun Microsystems Software für elektronische Alltagsgeräte (Kaffeemaschinen, Set-Top-Boxen etc.) 1995: Umbenennung in Java Neue Zielrichtung: Anwendungen für das zunehmend populäre World Wide Web 1996: JDK 1.0 1997: JDK 1.1 1998: J2SE 1.2 (Java 2, JDK 1.2) 2000: J2SE 1.3 2002: J2SE 1.4 2004: Java SE 5.0 (1.5) Stand dieser Vorlesung 2006: Java SE 6.0 2009: Java 7 ? 3 © Holger Röder Winter 2008/2009 Programmentwicklung se Literaturhinweise / Dokumentation The Java Tutorials (Sun) http://java.sun.com/docs/books/tutorial/ Christian Ullenboom: Java ist auch eine Insel 7. Auflage, 2007, Galileo Computing Komplett und kostenlos online verfügbar http://www.galileocomputing.de/openbook/javainsel7/ API: Java Platform, Standard Edition 6, API Specification http://java.sun.com/javase/6/docs/api/ Sprachspezifikation: The Java Language Specification http://java.sun.com/docs/books/jls/ 4 © Holger Röder Winter 2008/2009 Programmentwicklung se Die Java-Plattform Die Java-Plattform existiert in drei verschiedenen Varianten (Editions): Jeweils gleicher Java-Sprachkern Unterschiedliche Standardbibliotheken, die auf den jeweiligen Anwendungsbereich zugeschnitten sind Standard Edition (SE): „Normales“ JDK, Client-Anwendungen Enterprise Edition (EE): Server-Anwendungen innerhalb eines Application Servers/Servlet Containers Micro Edition (ME): Eingebettete Systeme, Handys, sonstige ressourcenbeschränkte Systeme Inhalt dieser Vorlesung: „SE + ein wenig EE“ 5 © Holger Röder Programmentwicklung Winter 2008/2009 Überblick: Java SE se Quelle: http://java.sun.com/javase/6/docs/ 6 © Holger Röder Im Gegensatz zu vielen anderen Übersetzern erzeugt der JavaCompiler keinen plattformabhängigen Maschinencode, sondern JavaProgrammcode (Bytecode) für eine virtuelle Maschine. Die virtuelle Maschine (Java Virtual Machine, JVM) interpretiert den Bytecode und führt ihn aus. Nachteil: langsamer als die direkte Ausführung von Maschinencode Just-In-Time-Compiler mildern dieses Problem! Vorteil: Bytecode ist plattformunabhängig Æ gleicher Bytecode kann von JVMs auf unterschiedlichen Plattformen ausgeführt werden. Programmentwicklung Winter 2008/2009 Bytecode und virtuelle Maschine se 7 © Holger Röder Winter 2008/2009 Programmentwicklung se Java-Programme, Einsatzgebiete Applikationen Selbständige, „normale“ Programme Werden mit dem Java-Interpreter direkt ausgeführt Keine Sicherheitseinschränkungen (Dateizugriff etc.) Applets Unselbständige Programme Eingebettet in HTML-Seiten, werden im Browser ausgeführt Sicherheitseinschränkungen möglich (Sandbox-Prinzip, bspw. für Dateizugriff, Netzwerkzugriff etc.) Spezielle Programmierschnittstelle Server-Anwendungen (Java EE) Servlets und JSPs (Java Server Pages) zur serverseitigen Generierung von HTML-Seiten Geschäftslogik: Enterprise Java Beans (EJBs), bieten Unterstützung für Transaktionen, Namensdienste, Sicherheit etc. Web Services 8 © Holger Röder „Hello World!“ in Java Datei HelloWorld.java Methode main: fest definierte Startmethode für Java-Applikationen Winter 2008/2009 Attribut text Klasse HelloWorld class HelloWorld { private String text = "abc"; public static void main(String[] args) { System.out.println("Hello World!"); } Programmentwicklung } se Aufruf der Methode println: Text-Ausgabe auf der Konsole 9 © Holger Röder Java-Anwendungen erstellen und starten Minimalausstattung: Editor + Java SE 6.0 SDK von Sun Winter 2008/2009 1. Quellcode schreiben, speichern (HelloWorld.java) class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 2. Java-Bytecode erzeugen (kompilieren, erzeugt HelloWorld.class) Programmentwicklung javac HelloWorld.java se 3. Java-Bytecode ausführen (interpretieren) java HelloWorld 10 © Holger Röder Sehr umfangreiche und komfortable Java-Entwicklungsumgebung Projekte verwalten, Code schreiben, kompilieren, ausführen, debuggen, testen, Server verwalten etc. innerhalb eines einzigen Werkzeugs Open Source: http://www.eclipse.org/downloads/ Programmentwicklung Winter 2008/2009 Eclipse Java IDE se 11 © Holger Röder Winter 2008/2009 Programmentwicklung se Hallo Eclipse! 1. Neues Java-Projekt erstellen: File > New > Project, Java Project Projektnamen eingeben Finish 2. Neue Klasse erstellen: File > New > Class Name der Klasse eingeben Häkchen bei public static void main (String[] args) setzen 3. Main-Methode schreiben 4. Ausführen: Run > Run as > Java Application 12