Java: Unterschied zwischen den Versionen
Hauer (Diskussion | Beiträge) (→Konzepte) |
Hauer (Diskussion | Beiträge) |
||
Zeile 3: | Zeile 3: | ||
== Verwendung == | == Verwendung == | ||
− | + | Programme, die in Java geschrieben werden, können auf allen Rechnern ausgeführt werden, auf denen eine virtuelle Maschine installiert ist. Dies hat den Vorteil, dass ein Java Anwendungsentwickler (ihr) sein Programm nicht für jede [[Architektur | Plattform]] anpassen muss, sondern davon ausgehen kann, dass solange eine virtuelle Maschine für ein entsprechendes Gerät existiert, sein Programm dort auch funktioniert. | |
− | Entsprechend konzentriert sich die Entwicklung in Java weniger auf hardwarenahe Programmierung, also dem direkten Ansprechen von Geräten über Signale zwischen | + | Entsprechend konzentriert sich die Entwicklung in Java weniger auf hardwarenahe Programmierung, also dem direkten Ansprechen von Geräten über Signale zwischen [[Treiber | CPU und Gerät]], sondern mit dem Verwenden von vorgegebenen [[Bibliothek | Modulen]] um plattformunabhängig Programme zu entwickeln, die auf weit verbreiteten [[Betriebssystem | Betriebssystemen]] von Anwendern verwendet werden können. |
== Konzepte == | == Konzepte == | ||
− | In der Liteartur findet man viele Begriffe, die versuchen Java zu beschreiben: Klassenbasiert, objektorientiert, strukturiert, [[Imperative Programmierung | imperativ]], funktional, generisch, reflexiv und nebenläufig. | + | In der Liteartur findet man viele Begriffe, die versuchen Java zu beschreiben: Klassenbasiert, objektorientiert, strukturiert, [[Imperative Programmierung | imperativ]], funktional, generisch, reflexiv und nebenläufig. Diese Begriffe sind hier kurz erklärt und ihre Relevanz für das Modul beschrieben: |
− | * Klassenbasiert: Programme werden in Java in | + | * Klassenbasiert: Programme werden in Java in sogenannte [[Klasse | Klassen]] aufgeteilt, welche einen Bauplan für Datenstrukturen repräsentieren, die in einem Programm verwendet werden. |
* Objektorientiert: Abstraktionen von Datenstrukturen werden durch eine Klasse beschrieben und anschließend anhand dieses Bauplans instanziiert. Ein Großteil der zweiten Hälfte der Veranstaltung beschäftigt sich mit diesem Thema. | * Objektorientiert: Abstraktionen von Datenstrukturen werden durch eine Klasse beschrieben und anschließend anhand dieses Bauplans instanziiert. Ein Großteil der zweiten Hälfte der Veranstaltung beschäftigt sich mit diesem Thema. | ||
− | * Strukturiert: Java bietet viele Möglichkeiten einem Programmierer | + | * Strukturiert: Java bietet viele Möglichkeiten, einem Programmierer sein Programm so lesbar zu gestalten, dass die Semantik des Programmes sich leicht aus seiner Syntax ableiten lässt. |
* Imperativ: Javaprogramme werden durch Folgen von Anweisungen beschrieben. Ein Großteil des ersten Teils der Veranstaltung beschäftigt sich mit diesem Thema. | * Imperativ: Javaprogramme werden durch Folgen von Anweisungen beschrieben. Ein Großteil des ersten Teils der Veranstaltung beschäftigt sich mit diesem Thema. | ||
* Funktional: Seit Java 1.8 (2014) ist es möglich, sich in Java auch Eigenschaften funktionaler Programmiersprachen zu Nutze zu machen. Dies ist für diese Veranstaltung jedoch nicht relevant. | * Funktional: Seit Java 1.8 (2014) ist es möglich, sich in Java auch Eigenschaften funktionaler Programmiersprachen zu Nutze zu machen. Dies ist für diese Veranstaltung jedoch nicht relevant. | ||
− | * Generisch: In Java können | + | * Generisch: In Java können Klassen so geschrieben werden, dass sie leicht für viele Datenstrukturen angepasst werden können. Dazu gibt es ein eigenes Feature der Prgorammiersprache, welches für diese Veranstaltung jedoch nicht relevant ist. |
− | * Reflexiv: Es ist in Java während der Ausführung eines Programmes möglich, den internen Zustand | + | * Reflexiv: Es ist in Java während der Ausführung eines Programmes möglich, den internen Zustand der virtuellen Maschine auszuwerten und zu manipulieren. Dies ist ein forgeschrittenes Feature, welches für diese Veranstaltung jedoch nicht relevant ist. |
− | * Nebenläufig: Es gibt Sprachelemente in Java, die es ermöglichen, parallel laufende Teilprogramme miteinander zu synchronisieren und kooperieren zu lassen. Dies ist ein fortgeschrittenes Feature, was für diese Veranstaltung nicht relevant ist. | + | * Nebenläufig: Es gibt Sprachelemente in Java, die es ermöglichen, parallel laufende Teilprogramme miteinander zu synchronisieren und kooperieren zu lassen. Dies ist ein fortgeschrittenes Feature, was für diese Veranstaltung jedoch nicht relevant ist. |
=== Zusammenfassend === | === Zusammenfassend === | ||
− | Die Konzepte von Java, mit denen wir uns in dieser Veranstaltung beschäftigen, sind die der imperativen Programmierung und der objektorientierten, klassenbasierten Abstraktion von Datenstrukturen. Java bietet für den interessierten Studenten noch wesendlich mehr, jedoch würde dies den Umfang der Veranstaltung sprengen und dem Ziel, | + | Die Konzepte von Java, mit denen wir uns in dieser Veranstaltung beschäftigen, sind die der imperativen Programmierung und der objektorientierten, klassenbasierten Abstraktion von Datenstrukturen. Java bietet für den interessierten Studenten noch wesendlich mehr, jedoch würde dies den Umfang der Veranstaltung sprengen und dem Ziel, Ihnen den grundlegenden Umgang mit einer Programmiersprachen beizubringen, entgegenwirken. |
== Einordnung == | == Einordnung == | ||
− | Java ist sowohl eine compilierte, als auch eine interpretierte Programmiersprache. Diese Mehrdeutigkeit liegt in dem Konzept der Plattformunabhängigkeit zu Grunde. | + | Java ist sowohl eine compilierte, als auch eine interpretierte Programmiersprache. Diese Mehrdeutigkeit liegt in dem Konzept der Plattformunabhängigkeit zu Grunde. Javaproramme werden in den meisten Fällen von einem [[Compiler | Bytecodecompiler]] zu [[Java/Bytecode | Bytecode]] übersetzt, jedoch gibt es auch [[Compiler | Nativcompiler]], die Javacode direkt in ausführbaren Maschinencode übersetzen. Der übersetzte Bytecode kann anschließend von einer virtuellen Maschine sehr effizient interpretiert werden. Heutzutage wird der von der virtuellen Maschine eingelesene Code sogar zur Laufzeit (JIT - Just In Time) in effizienten Maschinencode übersetzt. Dies erlaubt es aus [[Codelokalität | häufig ausgeführten Code]] mehr Performanz zu holen. |
Version vom 3. September 2015, 14:46 Uhr
Java ist eine von Oracle entwickelte objektorientierte Programmiersprache und ist Hauptbestandteil des Moduls Einführung in die Informatik (EINI). Programme, die in Java geschrieben werden, müssen vor ihrer Ausführung in sogenannten Bytecode übersetzt werden. Dieser Bytecode kann anschließend von einem anderen Programm, einer sogenannten virtuellen Maschine, interpretiert und ausgeführt werden.
Inhaltsverzeichnis
Verwendung
Programme, die in Java geschrieben werden, können auf allen Rechnern ausgeführt werden, auf denen eine virtuelle Maschine installiert ist. Dies hat den Vorteil, dass ein Java Anwendungsentwickler (ihr) sein Programm nicht für jede Plattform anpassen muss, sondern davon ausgehen kann, dass solange eine virtuelle Maschine für ein entsprechendes Gerät existiert, sein Programm dort auch funktioniert.
Entsprechend konzentriert sich die Entwicklung in Java weniger auf hardwarenahe Programmierung, also dem direkten Ansprechen von Geräten über Signale zwischen CPU und Gerät, sondern mit dem Verwenden von vorgegebenen Modulen um plattformunabhängig Programme zu entwickeln, die auf weit verbreiteten Betriebssystemen von Anwendern verwendet werden können.
Konzepte
In der Liteartur findet man viele Begriffe, die versuchen Java zu beschreiben: Klassenbasiert, objektorientiert, strukturiert, imperativ, funktional, generisch, reflexiv und nebenläufig. Diese Begriffe sind hier kurz erklärt und ihre Relevanz für das Modul beschrieben:
- Klassenbasiert: Programme werden in Java in sogenannte Klassen aufgeteilt, welche einen Bauplan für Datenstrukturen repräsentieren, die in einem Programm verwendet werden.
- Objektorientiert: Abstraktionen von Datenstrukturen werden durch eine Klasse beschrieben und anschließend anhand dieses Bauplans instanziiert. Ein Großteil der zweiten Hälfte der Veranstaltung beschäftigt sich mit diesem Thema.
- Strukturiert: Java bietet viele Möglichkeiten, einem Programmierer sein Programm so lesbar zu gestalten, dass die Semantik des Programmes sich leicht aus seiner Syntax ableiten lässt.
- Imperativ: Javaprogramme werden durch Folgen von Anweisungen beschrieben. Ein Großteil des ersten Teils der Veranstaltung beschäftigt sich mit diesem Thema.
- Funktional: Seit Java 1.8 (2014) ist es möglich, sich in Java auch Eigenschaften funktionaler Programmiersprachen zu Nutze zu machen. Dies ist für diese Veranstaltung jedoch nicht relevant.
- Generisch: In Java können Klassen so geschrieben werden, dass sie leicht für viele Datenstrukturen angepasst werden können. Dazu gibt es ein eigenes Feature der Prgorammiersprache, welches für diese Veranstaltung jedoch nicht relevant ist.
- Reflexiv: Es ist in Java während der Ausführung eines Programmes möglich, den internen Zustand der virtuellen Maschine auszuwerten und zu manipulieren. Dies ist ein forgeschrittenes Feature, welches für diese Veranstaltung jedoch nicht relevant ist.
- Nebenläufig: Es gibt Sprachelemente in Java, die es ermöglichen, parallel laufende Teilprogramme miteinander zu synchronisieren und kooperieren zu lassen. Dies ist ein fortgeschrittenes Feature, was für diese Veranstaltung jedoch nicht relevant ist.
Zusammenfassend
Die Konzepte von Java, mit denen wir uns in dieser Veranstaltung beschäftigen, sind die der imperativen Programmierung und der objektorientierten, klassenbasierten Abstraktion von Datenstrukturen. Java bietet für den interessierten Studenten noch wesendlich mehr, jedoch würde dies den Umfang der Veranstaltung sprengen und dem Ziel, Ihnen den grundlegenden Umgang mit einer Programmiersprachen beizubringen, entgegenwirken.
Einordnung
Java ist sowohl eine compilierte, als auch eine interpretierte Programmiersprache. Diese Mehrdeutigkeit liegt in dem Konzept der Plattformunabhängigkeit zu Grunde. Javaproramme werden in den meisten Fällen von einem Bytecodecompiler zu Bytecode übersetzt, jedoch gibt es auch Nativcompiler, die Javacode direkt in ausführbaren Maschinencode übersetzen. Der übersetzte Bytecode kann anschließend von einer virtuellen Maschine sehr effizient interpretiert werden. Heutzutage wird der von der virtuellen Maschine eingelesene Code sogar zur Laufzeit (JIT - Just In Time) in effizienten Maschinencode übersetzt. Dies erlaubt es aus häufig ausgeführten Code mehr Performanz zu holen.