Ich nehme derzeit an einer Akademie zum Java Fullstack Software Engineer teil. In den kommenden Wochen möchte ich hier meine Mitschrift, so gut es geht, aufzeichnen und mitteilen. Hier ist das, was ich vom ersten Tag in Block 2 gelernt und behalten habe:
Java Versionen
JDK - Java Development Kit
JRE - Java Runtime Environment (Java)
JDK - (Javac, Java)
JEE - Java Enterprise Edition (Serverseitige Webprogrammierung, Framewaork (Sammlung von Bibliotheken))
Ab Version 8: Jakarta EE (eigentlich Tomcat)
JME - Java Micro Edition (Steuerung von Kleingeräten)
JNE - Java Native Interface (Zugriff auf C oder C++ Routinen)
GUI - (Grafical User Interface) wird heute nicht mehr mit den alten Tools (JavaFX) sondern in html programmiert.


Erstellen eines neuen Java Projektes in IntelliJ
New Projekt/Maven/archetyp: Quickstart

Achtung: Unter Location muss der komplette Namen drin stehen:

Version in der pom.xml wieder auf die 11 anpassen:

Projektstruktur:
Src Main (funktionale Klassen) Java De.firma (Group-ID) Test (Testklassen) Java De.firma (Group-ID) pom.xml (Maven Config Datei)

Mit Strg-Alt-L kann der Code in IntelliJ formatiert werden:

Wir wollen uns die Datentypen anschauen und erzeugen erst mal ein neues Package:

Hmm, der hat jetzt den Ordner "datentypen" unter de.firma gelegt. Schön ist anders. Markeirt man den Java-Ordner und klickt dann auf das "Blumen"-Symbol, kann man mit "Flatten Packages" eine sauberere Ordnerstruktur erstellen:


Erstellen einer neuen Klasse:
Wir markieren wieder den gewünschten Ordner und klicken auf New/Java Class:

(Auf Groß-Schreibung achten (CamelCase))

Jetzt habe ich den Namen falsch geschrieben. Man ändert ihn mit "Refactor/Rename":


Datentypen


[origin](http://www.scalingbits.com/book/export/html/46)
Wir schreiben unser erstes kleine Java Programm um die Datentypen etwas besser kennen zu lernen:

package de.firma.datatypes; public class DataTypes { // Hauptmethode public static void main(String[] args) { //Deklaration und Definition von Variablen: // Typ Name Wertzuweiser String name = "Achim Mertens"; int groesse = 183; char geschlecht = 'm'; //In einfachen Hochkommata //float gewicht = 77.3f; Geht, ist aber schwierig, weil 77.3 double ist und erst in float konvertiert werden muss. double gewicht = 77.3; // Das ist zwar 4 Byte mehr, macht aber weniger Arbeit. boolean partner = true; final byte AUGENANZAHL; //Deklaration der Konstante AUGENANZAHL, Konstanten werden groß geschrieben AUGENANZAHL=2; // Die Wertzuweisung (Definition) geht nur einmal bei einer Konstanten System.out.println ("Hello Datatypes"); System.out.println("Dein Name ist: "+ name); System.out.println("Der zweite Buchstabe des Namens lautet: "+name.charAt(1)); System.out.println("Dein Name ist "+name.length()+ " Zeichen lang"); System.out.println("Deine Größe ist: " + groesse + " cm."); System.out.println("Dein Gewicht ist: " + gewicht); if (partner = true) { System.out.println("Du hast einen Partner"); } else { System.out.println("Du hast keinen Partner"); } System.out.printf("%s - %6.3f - %d \n", name, gewicht, groesse); } }
Kreisrechner App
File/New/Project/Maven/Archetype-quickstart
Projektname: 0201kreisrechner
Pom.xml auf Version 11 ändern
Wir ändern app.java ab:

Über die Tastatur(System.in) kommen die Daten in den "InputStreamReader" aus dem Systembus. Dieser liefert die Daten in den "BufferedReader":

In https://docs.oracle.com/javase/8/docs/api/ können wir die Klasse Java.lang genauer anschauen: System.in findet sich dort:

Alles was aus java.lang kommt, brauchen wir nicht importieren (ist standardmäßig dabei), aber wir brauchen noch den BufferedReader und den Inputstream aus java.io:
Import java.io.BufferedReader;
Import java.io.InputStreamReader;

Das kann man auch verkleinern:

Wir werden nun im unteren Fenster nach einer Eingabe gefragt:

While Schleife einbauen (Code/Sorround with/While).
Im Übrigen sollten Fehlermeldungen sprechend sein und auf das Problem hinweisen. :-)


package de.firma; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;/**
Kreisrechner
fläche = Pi * Radius * Radius
Umfang = 2 * Pi * Radius
*/
public class App
{
public static void main( String[] args ) {// Vorbereitung für die Eingabe via Tastatur
// InputStreamReader isr = new InputStreamReader(System.in); //Verknüpfung von Tastatur mit Systembus
// BufferedReader br = new BufferedReader(isr); //Verknüpfung vom Systembus mit dem SpeicherBufferedReader br = new BufferedReader(new InputStreamReader((System.in))); boolean fehler = false; while (fehler == false) { System.out.println( "Kreisrechner" ); System.out.println("---------------------------"); System.out.println("Bitte Radius eingeben: "); try { double radius = Double.parseDouble ( br.readLine()); double flaeche = radius * radius * 3.14159265; double umfang = 2 * radius * 3.14159265; System.out.printf("Radius %f \n",radius); System.out.printf("Fläche %f \n",flaeche); System.out.printf("Umfang %f \n",umfang); } catch (IOException e) { e.printStackTrace(); System.err.println("Irgendwas hat die Verbindung gekappt."); fehler = true; } //Fehlermeldung, wenn z.B. das Kabel durchschnitten wird catch (NumberFormatException e) { System.err.println("Sach ma, kannste nicht ne vernünftige Zahl eingeben du Trottel?"); fehler = true; } }
}
}
Dieses Script hat funktioniert und berechnet Fläche und Umfang solange man eine Zahl im Format double eingibt.
——————
Disclaimer
Alles was ich mitschrieb und verstanden habe ist ohne Gewähr.
Besten Dank an unseren tollen
Trainer: Hans-Joachim Blanke blanke@4point.de

Mehr dazu im nächsten Blog von mir.
Gruß, Achim Mertens