Einführung in getrennte Übersetzung in Java im Rahmen der Lehre des Programmierens mit der Programmiersprache Java. [] (), Lektion, Seite 721418
https://www.purl.org/stefan_ram/pub/java_getrennte_uebersetzung_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Getrennte Übersetzung in Java

Ein Programm kann mehrere Klassen verwenden, die in verschiedenen Übersetzungseinheiten enthalten sind. Eine Übersetzungseinheit kann immer nur ganze Klassen enthalten und beispielsweise keine einzelnen Methodendeklarationen.

An Klassen, die in einer anderen Übersetzungseinheit  deklariert werden, lassen sich leicht Nachrichten schicken.

So kann man beispielsweise eine Übersetzungseinheit "Kuckuck.java" mit der Deklaration der Klasse "Kuckuck" erstellen und eine Übersetzungseinheit "Hochzeit.java" mit der Deklaration der Klasse "Hochzeit" anlegen. Aus der Methode "main" einer dritten Klasse "Liedtest" lassen sich dann die Methoden dieser ersten beiden Klassen aufrufen, auch wenn sie in anderen Übersetzungseinheiten deklariert sind.

Kuckuck.java
/** Das Lied "Auf einem Baum ein Kuckuck sass" */ 
public final class Kuckuck 
{ /** Den Refrain des Liedes ausgeben. */ 
private static void refrainAusgeben() 
{ java.lang.System.out.println( "Sim sa la dim, bam ba," ); 
java.lang.System.out.println( "Sa la du, sa la dim -" ); } 
/** Den Text des Liedes ausgeben. */ 
public static void ausgeben() 
{ { java.lang.System.out.println( "Auf einem Baum ein Kuckuck, -" ); 
refrainAusgeben(); 
java.lang.System.out.println( "Auf einem Baum ein Kuckuck sass." ); } 
{ java.lang.System.out.println( "Da kam ein junger Jaeger, -" ); 
refrainAusgeben(); 
java.lang.System.out.println( "Da kam ein junger Jaegersmann." ); } 
{ java.lang.System.out.println( "Der schoss den armen Kuckuck, -" ); 
refrainAusgeben(); 
java.lang.System.out.println( "Der schoss den armen Kuckuck tot." ); }}}

Hochzeit.java
/** Das Lied "Ein Vogel wollte Hochzeit machen" */ 
public final class Hochzeit 
{ /** Den Refrain des Liedes ausgeben. */ 
private static void refrainAusgeben() 
{ java.lang.System.out.println( "Fi-di-ra-la-la, fi-di-ra-la-la, fi-di-ra-la-la-la-la!" ); } 
/** Den Text des Liedes ausgeben. */ 
public static void ausgeben() 
{ java.lang.System.out.println( "Ein Vogel wollte Hochzeit machen, in dem gruenen Walde." ); 
refrainAusgeben(); 
java.lang.System.out.println( "Die Drossel war der Braeutigam, die Amsel war die Braute." ); 
refrainAusgeben(); 
java.lang.System.out.println( "Die Lerche, die Lerche, die fuehrt die Braut zur Kerche." );  
refrainAusgeben(); }}

Liedtest2.java
/** Testklient fuer Liedklassen */ 
public final class Liedtest2 
{ /** Testklient fuer Liedklassen */ 
public static void main( final java.lang.String[] args ) 
{ Kuckuck.ausgeben();  
Hochzeit.ausgeben(); }}

Es reicht, den Übersetzer mit "javac Liedtest2.java" aufzurufen und die erhaltene Klasse mit "java Liedtest2" auszuführen. Die anderen verwendete Klassen werden dabei nötigenfalls automatisch übersetzt und in das Programm eingebunden.

Die automatische Übersetzung nach Bedarf funktioniert aber nur für eine Klasse, die auch in einer Übersetzungseinheit enthalten ist, die nach dieser Klasse benannt wurde, da der Übersetzer "javac" sonst die Klassendeklaration nicht finden kann. Aus Übersetzungseinheiten mit mehreren Klassendeklarationen müßten dann zuvor durch einen ausdrücklichen Aufruf des Übersetzers "javac" die verschiedenen Klassendateien erzeugt werden. Damit Klassen leicht zu finden sind, ist es empfehlenswert, nur eine Klasse pro Übersetzungseinheit zu deklarieren und die Datei mit der Übersetzungseinheit nach dieser Klasse zu benennen. (Ausgenommen von dieser Regel ist die Möglichkeit, innerhalb einer Klasse weitere „Innenklassen“ zu deklarieren, derer es dann mehrere in einer Übersetzungseinheit geben darf.)

Der Übersetzer erzeugt aus einer Übersetzungseinheit eine Klassendatei, welche die Klassendeklaration in einer Form enthält, die von der Javamaschine direkt verarbeitet werden kann. Wenn die Javamaschine diese Klassendatei lädt, bemerkt sie die Bezüge auf Deklarationen in anderen Klassendateien, sucht diese Klassendateien im selben Verzeichnis, lädt sie und verbindet sie mit der auszuführenden Klassen zu einem vollständigen Programm. Insofern ist bei der Herstellung von Javaprogrammen kein separater Vorgang zum „Verbinden“ der Klassendateien nötig: Diese Vorgang wird von der Javamaschine miterledigt.

Falls keine Klassendatei, aber eine Quelldatei mit dem passenden Namen vorhanden ist, wird bei Bedarf sogar zunächst der Übersetzer gestartet, um die Klassendatei zu erzeugen. Falls eine Quelldatei einer benötigten Klassendatei geändert wurde, ist die Klassendatei veraltet. Dann wird eine eventuell schon vorhandene Klassendatei ignoriert und die Quelldatei automatisch erneut übersetzt, um zunächst eine aktuelle Version der Klassendatei herzustellen und diese dann zu verwenden.

In jeder Übersetzungseinheit sollte nur eine Klasse deklariert werden. Die Übersetzungseinheit sollte den Namen dieser Klasse mit der Erweiterung ".java" haben.

Beispiel ausführen
Starten Sie das oben beschriebene Programm "Liedtest2.java" wie oben beschrieben.
Übersetzungseinheit refaktorieren
Zerlegen Sie die Lösung einer früheren Übungsaufgabe, bei der mehrere Klassen in einer Übersetzungseinheit deklariert wurden (Ausgabe einer Begrüßung in verschiedenen Sprachen), in mehrere Übersetzungseinheiten, so daß jede Übersetzungseinheit nur eine Klasse enthält, und testen Sie die erzeugten Klassen.
Math
Erstellen Sie eine Übersetzungseinheit "Math.java" mit einer beliebigen Klassendeklaration. Versuchen Sie dann in einer weiteren Übersetzungseinheit im selben Verzeichnis die Nachricht "random()" an die Standardklasse "Math" zu schicken, um eine Pseudozufallszahl zu berechnen. Treten dabei Probleme auf und wie lassen diese sich gegebenenfalls lösen, ohne die Übersetzungseinheit "Math.java" zu verändern (ohne sie zu löschen, umzubenennen oder zu verschieben)?

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721418 stefan_ram:721418 source, source code,sourcecode, Programmier sprache java, Java Programm Java Programmiersprache Java Sprache Java Programmierung Programmieren in Java, Die Programmiersprache Java Javapgrammierung, Java-Programmierung, Java2, Java1.2, Java1.3, Java1.4, Java1.5, Java 2, Java 1.2, Java 1.3, Java 1.4, Java 1.5, Java 1.6, Java 1.7, Java 1.8, Java 8, Java 1.9, Java 9, Tiger, Dolphin, objektorientierte Programmierung, Java sun, , Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721418, slrprddef721418, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/java_getrennte_uebersetzung_de