📣 The current Freelance Radar Q1 2024 is now available! 📣 See the results

Java

Die Programmiersprache Java existiert seit 1995 und gehört mit zu den bekanntesten Programmiersprachen der Welt. Es kann zwischen den zwei Java-Versionen differenziert werden: Java SE, der Standversion, und Java EE, der Enterpriseversion.

Tell us what you are working on and how a Java freelancer can support you!

Contact a Java expert now!

Please wait...

Was ist Java?

Unterschieden werden muss hier zwischen der eigentlichen Programmiersprache, den Entwicklungstools und der Laufzeitumgebung. 

Um zu verstehen, weshalb Du dein Programm mit Java entwickeln lassen solltest, ist es hilfreich sich die zwei signifikanten Arten von Programmiersprachen näher anzuschauen. Es wird grundsätzlich zwischen Compiler- und Interpretersprachen unterschieden:

  • Durch die Verwendung von Interpretersprache wird der Quellcode sofort in den Arbeitsspeicher eines Computers überführt und auch direkt ausgeführt. 
  • Bei der Nutzung von Compilersprache wird mittels eines Compilers der Quelltext in eine Datei übersetzt, die dann auf einem bestimmten Betriebssystem ausgeführt werden kann (z.B. Dateien mit der Endung .exe auf Windowssystemen)
Compilersprachen sind weniger anfällig für Fehler, da Syntaxfehler angezeigt werden und so schnell von dem Entwickler behoben werden können wohingegen bei der Verwendung eines Interpreters lediglich deutlich wird, dass ein Fehler besteht, allerdings nicht wo genau 
sich dieser im Quellcode befindet. 

Java nutzt die Vorteile beider Sprachen und kombiniert diese. So wird durch Java ein Quelltext von einem Compiler in eine Datei umgewandelt. Diese beinhaltet jedoch kein fertiges, lauffähiges Programmen, sondern lediglich den sog. Bytecode. Der Bytecode läuft auf keinem realen Betriebssystem sondern der JVM (Java Virtual Machine). Die JVM agiert hier quasi als Interpreter, der das Hochladen des Bytecodes in den Arbeitsspeicher eines Computers verantwortet und so das Programm zum Laufen bringt. 


Vom Quellcode zur Ausführung eines Java-Programms (JRE = Java Runtime Environment)

Da Java eine Vielzahl von verschiedenen Kombinationen von Betriebssystem und Prozessor bedient, kann der Bytecode von fast allen gängigen Computern ausgeführt werden. Der entscheidende Vorteil eines Javaprogramms ist also, dass es unabhängig auf vielen gängigen Plattformen läuft und damit weitgehend unabhängig von einem bestimmten Betriebssystem und Prozessor ist. 

Javaprogramme findest du sowohl auf mobilen Anwendungen, Smart-TVs, zahlreichen PC-Anwendungen, Spielekonsolen, medizinischen Geräten, im Produktionsbereich oder auch dem Automobilbereich (Navigationssteuerung, Smart Car). In jedem modernen Haushalt oder Büro befinden sich zahlreiche Javaanwendungen.

Eigenschaften von Java

Objektorientierte Programmiersprache 

Genau wie C, C++, Perl oder auch Ruby gehört Java zu der Familie der objektorientierten Programmiersprachen. Das bedeutet, dass der Code zu verschiedenen Objekten beziehungsweise Einheiten zusammengefasst wird, die wiederum über verschiedene Schnittstellen verfügen. Diese Modularisierung erleichtert die Darstellung abstrakter Inhalte. Durch die Bündelung von Daten und Code zu Objekten, lassen sich einzelnen Objekte unabhängig von anderen Komponenten des Programms prüfen, was die Fehlerquote enorm reduziert. Der entscheidende Vorteil bei objektorientierten Programmiersprachen ist die Wiederverwertbarkeit verschiedener Codeblöcke. 

Write Once, Run Anywhere

Ist ein Javaprogramm erstmal geschrieben und funktionsfähig läuft es ohne das es einer Änderung Bedarf auf fast jeder Plattform, nachdem eine passende Laufzeitumgebung installiert wurde. Zum Teil werden diese Laufzeitumgebungen für die gängigsten Betriebssysteme von Oracle selbst angeboten. Manche Hersteller lassen sich aber auch ihre eigene Laufzeitumgebung zertifizieren.

Wie läuft ein Softwareentwicklungsprojekt ab?

Bei der Entwicklung von Software handelt es sich meist um ein komplexes Projekt, das einer intensiven Planungsphase bedarf, um die Idee einer funktionierenden Software umsetzen zu können. Wie auch in anderen Unternehmensbereichen gibt es bei der Entwicklung nun verschiedene Ansätze zu der Realisierung eines Projekts. Im Wesentlichen besteht ein Projekt immer aus den folgenden Schritten.

1. Anforderungsanalyse
In diesem Schritt analysiert der Freelancer gemeinsam mit dir, dem Entwickler- und Produktteam oder deinem Endkunden die Anforderungen an das zu erstellende Programm. Hier empfiehlt es sich bereits so tief wie möglich ins Details zu gehen, um im Rahmen der nächsten Schritte eine realistische Aufwandseinschätzung erhalten zu können. 

2. Analyse der Systemarchitektur 
Hier wird die Gesamtfunktion des Produkts in verschiedene Teilbereiche heruntergebrochen, um besser einschätzen zu können, welche Ressourcen für die Realisierung des Projekt erforderlich sein werden. 

3. Entwurf 
Die Anforderungen werden erneut abgeglichen, um zu gewährleisten, dass das entworfene Programm auch mit den in der Anforderungsanalyse definierten Zielen übereinstimmt.

4. Festlegung der Softwarearchitektur 
Der Entwurf wird detaillierter wie bei einem Hausbau zu einem realen Konzept, quasi dem Bauplan, ausgearbeitet.

5. Entwurf der Software
In diesem Schritt findet die eigentliche Entwicklung der Software statt.

6. Unit Tests
Anschließend werden die einzelnen Teilkomponenten eines Softwareprogramms auf ihre Funktionalität getestet, sodass ggf. anschließend noch Fehler behoben werden können.

7. Integrationstests 
Der Integrationstest prüft nun die Performance bzw. das Zusammenspiel der Einzelkomponenten (Units).

8. Systemintegration
Sind sowohl die Unit- als auch Integrationstests bestanden, kann die Software nun implementiert werden.

9. Abnahme der Software 
In diesem Schritt wird die entwickelte Software durch den Freelancer an dich oder den Endkunden übergeben. 

10. Wartung und Administration
Läuft die Software fehlerfrei, solltest Du auch entsprechende Ressourcen aktivieren, um etwa erforderliche Updates durchführen zu lassen oder Berechtigungen zu erteilen. Bei sehr umfangreichen Programmen, kann hier die Beschäftigung eines Systemadministrators oder die Beauftragung einer Agentur erforderlich sein. Bei kleineren Projekten, kann oft auch der Softwareentwickler selbst die anschließende Wartung auf Stundenbasis übernehmen. 

Durch die Ausrichtung des Entwicklungsprozesses an dem V-Modell, können klare Rollen definiert werden und mögliche Risiken durch verschiedene Qualitätssicherungsmaßnahmen minimiert werden. Es definiert verschiedene Aufgabenbereichen und legt einen Ablaufplan für deren Bearbeitung fest. Die im Rahmen des Modells definierten Aufgaben fallen in jedem Softwareentwicklungsprojekt an, allerdings ist die Betrachtungsweise für viele moderne und hoch komplexe Entwicklungsprojekte zu einfach. Zudem wird durch die starre Struktur und die fest definierten Abläufe eine flexible Reaktion auf etwaige Änderungen erschwert. Die meisten Softwareentwicklungsprojekte finden in einem agilen Projektumfeld statt. 


Agile Softwareentwicklung 



Durch die agile Ausrichtung der Prozesse bei der Softwareentwicklung soll das fertige Programm früher fertiggestellt werden und wertvolle Ressourcen eingespart werden. Dies wird durch die kontinuierliche Berücksichtigung von Veränderungen und die schnelle Reaktion auf diese durch eine etwaige Anpassung des Entwicklungszykluses erreicht. So ist beispielsweise auch eine nachträgliche Änderung der Anforderungen (etwa durch veränderte Markt- oder Produktanforderungen) im Rahmen der Entwicklungsphase möglich, sollte dies erforderlich sein. Die Dokumentation soll durch eine Vielzahl von kurzen face-to-face Meetings erleichtert werden. 

Java Frameworks und Tools

Ein Framework ist eine Art Baukasten, das aus bereits vorprogrammierten Java Elementen besteht. Es gibt verschiedene Bestandteile innerhalb eines Programms, die häufig gebraucht werden. Durch ein Framework kann ein Entwickler auf bereits bestehenden Code zugreifen und muss diesen nicht jedes Mal neu entwickeln. Ein Framework beinhaltet in der Regel auch bereits verschiedene APIs (Schnittstellen) zu anderen Programmen oder Datenbanken. So lassen sich verschiedene Quellen einfach ansprechen und der Entwickler spart viel Zeit. Wir haben hier die gängigsten Frameworks aufgeführt, die ein Java Entwickler kennen sollte:

Spring ist mit eines der populärsten und meist genutzten Frameworks, das insbesondere für die Programmierung von Web-Anwendungen verwendet wird. Das Framework wird bis heute laufend durch das betreuende Kernteam an Entwicklern weiterentwickelt. Durch Spring Boot kann die Konfiguration einer Spring Applikation vereinfacht werden. Durch den sog. Spring Initializer können verschiedene Services Web-Frameworks oder Messaging-Komponenten ausgewählt werden ohne, dass diese manuell konfiguriert werden müssen. Durch die schnelle Anbindung ist bei der Nutzung von Spring Boot auch häufig die Rede von der Erstellung von Microservices.

Eclipse ist ein Nachfolger von dem von IBM entwickelten Framework Visual Age for Java 4.0 und ist mit allen Java Programmen, die mit der Version Java 5 oder höher entwickelt wurden, kompatibel. Auch bei Eclipse handelt es sich um ein Open Source Framework, das über eine Vielzahl von kommerziellen und quelloffenen Erweiterungen verfügt.

Hibernate wurde 2001 von einem Team von Java Spezialisten entwickelt. Die Weiterentwicklung wurde von dem Unternehmen JBoss maßgeblich vorangetrieben. Das Framework wird täglich über 3000 mal heruntergeladen. Oftmals existiert zwischen Anwendungen objektorientierter Programme und relationalen Datenbanken wie etwa MySQL eine Inkompatibilität. Durch Hibernate können jedoch objektorientierte Daten in relationalen Datenbanken gespeichert werden. Dadurch ergibt sich der Vorteil der Datenbankunabhängigkeit von Javaanwendungen.

Maven  ermöglicht eine standardisierte Erstellung und Administration von Java Programmen. Das Build-Management-Tool wurde von Apache entwickelt und bildet anders als die oben beschrieben Frameworks den gesamten Lebenszyklus eines Softwareentwicklungsprojekts ab. Durch die Verwendung von Sparks kann eine weitgehende Automatisierung begonnen bei dem Anlegen eines Softwareprojekts, dem Kompilieren bis hin zu dem Testing und der anschließenden Verteilung der Software auf den verschiedenen Rechnern gewährleistet werden.

Enterprise JavaBeans (EJBs) sind standardisierte Bestandteile des Servers der Java Enterprise Edition. Die EJBs gehen bezüglich der Wiederverwertbarkeit von Code noch einen Schritt weiter als die reine Objektorientierung. Die einzelnen Komponenten (Beans) sind bereits fertige Programmbestandteile, die die Umsetzung von diversen Unternehmensanwendungen wie Transaktions- oder Sicherheitsdiensten enorm erleichtern. So ist die Funktion beim Einsatz einer vorgefertigten Komponente garantiert. Die EJBs sind Teil einer Client-Server-Architektur. Das bedeutet, dass ein Client auch auf Komponenten wie etwa Anwendungen und diverse Geschäftsprozesse zugreifen kann, die außerhalb des eigenen Netzwerks liegen.

Im Wesentlichen kann zwischen drei Arten von EJBs unterschieden werden: Session-, Entity-, und Message Driven Beans, die jeweils verschiedene Aufgaben übernehmen. 
  • Session Beans bilden einzelne Verbindungen zwischen Nutzer und System ab und existieren nur solange eine bestimmte Verbindung anhält. 
  • Entity Beans schaffen eine dauerhafte Verbindung und sind zudem an ein bestimmtes Objekt (Entity) aus einer Datenquelle wie etwa ein Benutzer, Adressen oder an eine Rechnung gebunden.
  • Message Driven Beans ermöglichen eine asynchrone Kommunikation möglich machen. Die anderen Beans verarbeiten die vom Client bereitgestellten Informationen in Echtzeit. Message Driven Beans nutzen den Java Message Service und können so asynchron mit verschiedenen Systemen kommunizieren, bei denen keine prompte Reaktion des Clients erforderlich ist. Dies ist zum Beispiel beim Beantworten von Anfragen wie Emails der Fall.

Es handelt sich hier bei der Darstellung der Frameworks und Tools lediglich um eine Auswahl von Frameworks. Es gibt mittlerweile eine Vielzahl weiterer Frameworks wie Spark, JHipster, Blade, Struts, Mockito oder JUnit, das üblicherweise zum Testen von Javaprogrammen verwendet wird.