Freitag, 2. September 2016

Java tutorial #1 - Hello world! [mit Eclipse]

Als erstes werden wir das bekannteste Programm der Welt schreiben: Hello World!. Dies ist auch in Java nicht kompliziert.

Neues Projekt

Als erstes benötigen wir ein neues Projekt, dazu machen wir einen rechts-Klick im Tab "Project Explorer" und gehen dort unter "New" auf "Project..."
Neues Projekt erstellen in Eclipse
Nun erscheint ein Dialog wo wir auswählen können welchen typ von Projekt wir denn esrtellt haben wollen. Für den anfang recht ein simples Java Projekt welches wir unter "Java/Java Projekt" auch einfach finden.
Der Projekt Wizard

Nun können wir die Eigenschaften unseres Projektes einstellen unter anderem soetwas wichtiges wie z.B. den Namen. Alles andere interressiert uns nicht.
Eigenschaften des Projektes
Nun haben wir unser erstes projekt erstellt.

Das Programm - Die erste Klasse

Nun wollen wir den benötigten Code schreiben. Java ist eine Objekt-orientierte Sprache. Also benötigt man um code zu erstellen erstmal eine Klasse. Diese wollen wir nun erstellen.
Dazu klappen wir das projekt aus (click auf den kleinen pfeil links neben dem projekt).
Dort machen wir einen rechts-Klick auf den eintrag "src" und gehen auf "New/Class"
Das popup-menu im projekt

Nun öffnet sich ein dialog zum erstellen einer Klasse. Dort lässt sich auch wieder einiges einstellen.
Im Feld "Package" können wir den ort in unserem Projekt wählen wo wir die klasse speichern wollen. (siehe erklärung am ende) Im Feld "Namen" können wir können wir den Namen der klasse angeben.
Der Klassen Wizard
Ich nehme dazu das package "tutorial1" und als klassennamen "HelloWorld"
Ein click auf "Finish" und wir haben eine Klasse erstellt.
Unsere Erstellte Klasse

Das Programm - Der Code

Nun können wir in unsere Klasse den Code einfügen:

Und nun die erklärung zu diesem code:
- Als erstes benötigen wir eine methode als einstiegspunkt. Diese methode heißt "main". In java wird sie wie folgt definert "public static void main(String[] args)". Dabei folgen wir einem einfachen schema: "<zugriffs berechtigungen> <rückgabetyp> name(typ variablename)". WICHTIG! in java ist es wichtig das die main-methode genauso ausieht, da sie sonst nicht erkannt werden kann. Weitere informationen zu den Standard datentypen und den berechtigungen weiter unten.
- Die "{}" sind zeichen um codeblöcke zu defineren.
- Nun der code der überhaupt den text auf unseren bildchirm bringt: "System.out.println()". Nun schritt für schritt: "System" ist eine klasse die standartmäßig immer existiert. Sie enthält einige wichtige objekte und methoden. "out" ist ein Objekt in dieser klasse vom typ "PrintStream". Einfach erklärt gibt ein printstream etwas aus - an die console. "println" ist eine Methode dieses Printstreames und gibt den angegebenen text (im fachjargong einen String) aus und erstellt automatisch einen zeilenumbruch.

Erklärungen:

Packages - was sind sie und was können sie?

Ein package ist ein ordner innerhalb eines Java-programmes. In java ist es so das einige zugriffs-typen den zugriff nur auf klassen in demselben package gewähren. Außerdem sind sie wichtig um eine struktur zu erhalten, in unserem fall um die einzelnden Tutorials voneinander abzugrenzen.

Liste aller (einfachen) berechtigungen

Zu erst sei mal gesagt das diese berechtigungen NUR für: klassen, variablen die in einer klasse direkt deklariert (geschrieben) worden sind, und methoden sind.
Dazu giebt es zwei typen von berechtigungs-typen:
  • Die erste gruppe bestehen aus: private/public/protected und einmal einfach weggelassen. Diese gruppe hatt die besonderheit dass sie nicht miteinander kombinert werden können.
    • private gibt nur der eigenen klasse zugriffsrechte
    • public gibt allen zugriff
    • protected gibt nur klassen zugriff die diese classe als sog. Mutter oder Superklasse haben
    • und keinen zu benutzen bewirkt das nur klassen die mit dieser klasse in einem gleichen package "leben" zugriff
  • Die zweite gruppe besteht aus: static/final
    • static macht das eben halt kein objekt erzeugt werden muss um diese variabel/methode nutzen zu können, ausnahme klassen: diese können immer genutzt werden auser bei verschachtelten klassen, aber das lernen wir später
    • final bewirkt das diese variabel oder das diese methode nicht mehr geändert werden kann also "absolut" ist. Bei klassen bewirkt sie das keine klasse diese klasse als Mutter klasse nutzen kann.

Liste aller standarttypen

Primitive datentypen, also typen die nicht direkt in klassen deklariert werden mussten, und ja in Java wird alles in Klassen deklariert, diese liegen fast alle im standart-package java.lang. Diese klassen sbeichern keine daten sondern stellen nur einige support-methoden zur verfügung.
  • byte: ein byte - 8bit 
  • short: die abgespeckte version des integers - 16bit
  • int: ein integer - 32bit
  • long: eine sehr große zahl - 64bit
  • float: eine gleitkomma zahl - 32bit
  • double: der große bruder von float - 64bit
  • boolean: ein typ der nur 2 zustände kann "true" und "false" - 1bit, ist doch logisch oder?
  • char: ein typ der ein zeichen repräsentiert, codiert in unicode (wertbereich \u0000 - \uffff), deklariert wird es mit ' z.B. >>'c'<< - 16bit
Dann gibt es einige standart klassen die auch immer genutzt werden können:
  • String: objekt das zur darstellung von zeichenketten genutzt wird, deklariert wird es mit ", z.B. >>"HelloWorld"<<

Java tutorial #0 - Das Setup

Hier das erste tutorial meiner Java turorial serie. Heute: das Setup!
Achtung dieses tutorial richtet sich an anfänger in der sprache Java nicht an anfänger im generellen umgang mit Programmiersprachen oder dem PC selbst, d.h. ich werde hier nicht näher darauf eigehen wie man die benötigten programme herunterlädt oder sie installiert. Alle webseiten sollten daher für euch selbsterklärend sein. Falls doch probleme auftauchen sollten helfe ich natürlich gerne.

Die installation von JRE und JDK

Als erstes benötigen wir die Java Laufzeitumgebung (JRE) die wir benötigen um überhaupt java programme, wie z.b. Minecraft, ausführen zu können. Nach dieser intsallation benötigen wir noch das Java Development Kit (JDK) , welches uns erlaubt Java programme überhaupt zu komplimieren.

Installation der IDE:

Die erste IDE die ich euch hier vorstellen will ist eclipse
Die zweite IDE die ihr nutzen könnt ist  netbeans.
Ich nutze persönlich eclipse also werden hier vermehrt screenschots von dieser IDE auftauchen. Welche ihr benutzt ist euch überlassen.

FAQ zu Java:

Warum benötige ich überhaupt eine Laufzeitumgebung und was tut die eigentlich?

Normalerweise wird sourcecode vom Kompiler direkt in maschinencode übersetzt der dann von der CPU ausgeführt werden kann. Auch libs werden in diesen maschinencode eingefügt. (in c durch #include). Das problem hierbei ist das bei unterschiedlichen prozzessoren oder betriebsystemen alles nocheinmal komplimiert werden muss. Java stattdessen nutzt bytecode. Bytecode ist eine abstrakte ebene zwischen sourcecode und maschinencode. Es errinnert schon stark an den maschinencode kann aber von einer CPU nicht direkt ausgeführt werden. Dazu ist eine Laufzeitumgebung nötig, die den bytecode interpretiert und dann den nötigen maschinencode an die CPU sendet. So kann ein Java Programm, wenn es einmal komlimiert ist, auf allen PC's die diese JRE installiert haben laufen.