-
31.05.2012, 23:25 #1
- Registriert seit
- 15.11.2011
- Beiträge
- 6.210
- Blog Entries
- 5
Thanked 9.132 Times in 3.006 Posts[Paper #3] Saubere Struktur bei der Entwicklung
Vorwort
In Teil #3 (http://u-hacks.net/tutorials-90/pape...-heraus-12977/) habe ich gezeigt, wie man den Knuddels-Client aus Java heraus lokal starten kann.
Damit auch Anfänger hier schnell Erfolge erzielen können, habe ich mich auf das wichtigste beschränkt.
So ist z.B. die Verzeichnisstruktur zu kurz gekommen.
Damit es nachher nicht heißt ich würde angehenden Entwicklern empfehlen, auf Übersichtlichkeit zu scheißen und einfach alles in einen Ordner zu knallen, zeige ich euch hier die Grundstruktur eines übersichtlichen Clienten.
Um dieses Tutorial komplett zu verstehen, ist Grundwissen in Batch erforderlich.
1. Ordner anlegen
Wie zuvor legen wir erstmal einen Ordner für alles was mit dem Client zutun hat an. Idealerweise nennen wir diesen Client.
In diesem Ordner erstellen wir nun einige neue Unterordner:
src
src ist die Abkürzung für source bzw sourcecode. In diesen Ordner kommen alle selbst geschriebenen Klassen des Clienten sowie später unsere Manipulator-Klasse.
lib
In den lib-Ordner kommen sämtliche libraries, die wir nutzen (Applet, ani-Archiv usw).
dist
Der distribute-Ordner enthält nachher unseren fertigen Client, der in dieser Form weitergegeben werden kann (distribute = verteilen).
Man kann die Ordner natürlich auch anders nennen, wenn man diese Umbenennung(en) später im Tutorial berücksichtigt.
Die Namen der Ordner sind so gewählt, dass sie möglichst kurz sind, aber dennoch auf ihren Inhalt schließen lassen (sonst könnte man die Ordner auch einfach a, b und c nennen).
Dies ist für Coder optimal, da coder normal faul sind und daher natürlich nicht jedesmal wenn sie diese Ordner verwenden Romane schreiben möchten.
2. Dateien in die Ordner verschieben
Aus obiger Erklärung kann man sich eigentlich schon denken was wo hineingehört, damit es aber auch dem letzten Klar ist hier nochmal die komplette Verzeichnisstruktur:
Client
--src
----Client.java
--lib
----knuddelsk90amz.jar
----ani90amz.jar
----netscape
--dist
3. Script + Mainfest erstellen
Da wir das ganze nun etwas sauberer und professioneller angehen wollen, erstellen wir uns getrennte Scripte fürs starten und compilieren.
Bei dem alten Script wird jedesmal alles compiliert, was natürlich unsinnig ist, wenn man den Client nur starten will.
Bevor wir ein Script erstellen, erstellen wir erstmal eine sogenannte Mainfest-Datei. Diese Datei gibt Beispielsweise an, welches die Startklasse ist, die beim Doppelklick auf das Jar-Archiv gestartet werden soll.
Dazu erstellen wir im Ordner Client eine neue Textdatei namens 'mainfest'.
In dieser Datei legen wir die Startklasse fest:
Code:Main-Class: Client
Jetzt erstellen wir die Batchdatei, die alles komplett neu kompiliert. Passend dazu nennen wir sie compile.bat.
Am Anfang der Datei definineren wir einige Variablen:
Code:@set version=90alw @set cp=lib\knuddelsk%version%.jar;. @set out=Client%version%
version gibt die Appletversion an. Bei einem Appletupdate müssen wir die Version so nur an dieser einen Stelle ändern und nicht an 10 weiteren.
cp ist der ClassPool von Java. Hier gehören alle Libs rein die wir nutzen und die Java braucht, um alles fehlerfrei zu kompilieren.
Im Moment ist das nur das Applet, es werden aber später auf jeden Fall noch weitere dazukommen.
out ist der Name der Jar-Datei, die später unser fertiger Client im Ordner dist tragen wird.
Es empfiehlt sich, zuvor compilierte class-Dateien aus dem src-Ordner zu löschen, bevor man sie neu compiliert. Ist nicht zwingend notwendig, aber beugt Fehlern vor:
Code:del src\*.class
Nun compilieren wir alle java-Dateien im src-Ordner. Im moment ist das zwar nur eine, das wird sich aber später noch ändern, wenn man sauber objektorientiert programmiert.
Daher nutzen wir auch hier das Joker-Zeichen und kompilieren alle Java-Dateien auf einen Schlag. Da sich das Knuddels-Applet aus übersichtlichkeitsgründen in einem anderen Ordner befindet, übergeben wir java dies als ClassPool.
Code:javac -cp %cp% src\*.java
Code:cd dist mkdir tmp && cd tmp
Der Unterschied ist nur, dass dies nur für das Jar-Archiv gemacht wird und wir davon nichts mitbekommen. Unsere Dateien sind und bleiben zum coden schön ordentlich in getrennten Ordnern.
Wir kopieren also erstmal alle compilierten Klassen in unseren Temp-Ordner
Code:xcopy ..\..\src\*.class . /Y
Code:jar xf ..\..\lib\knuddelsk%version%.jar jar xf ..\..\lib\ani%version%.jar
Code:md netscape xcopy ..\..\lib\netscape\* netscape /S /Y
Code:jar cfm ..\..\dist\%out%.jar ..\..\mainfest.txt *
Natürlich muss jemand den ganzen Dreck, den wir im tmp-Ordner gemacht haben auch wieder aufräumen. Das überlassen wir nicht der imaginären Putzfrau, sondern machen es selbst:
Code:cd .. rmdir /S /Q tmp
Code:pause
Das fertige Script sollte nun so aussehen:
Spoiler:
Der fertige Client befindet sich im Ordner dist und heißt hier ClientClient90alw.jar.
Um ihn zu starten ist kein Startscript nötig, es genügt ein Doppelklick auf die jar-Datei.
Alternativ kann man ihn natürlich auch über eine Batchdatei mit dem Inhalt
Code:java -jar Client90alw.jar
Vorteile:
Übersichtliche Verzeichnisstruktur
Client kann einfacher geupdatet werden
User erhält ein fertiges Jar-Archiv, das per doppelklick startet - keine 99 Sourcefiles die über eine Batch-Datei gestartet werden
Mehr fällt mir grad nicht ein, sollte aber denke ich reichen, um diese Methode der Chaos-Methode vorzuziehen.
Das nächste Tutorial zur Manipulation des Clienten wird logischerweise auf diesem Tutorial aufbauen und nicht auf #2.
Im Anhang befindet sich der gleiche Client aus Paper #2 mit der hier gezeigten überarbeiteten Verzeichnisstruktur.
-
The Following 7 Users Say Thank You to DMW007 For This Useful Post:
-
21.07.2012, 01:54 #2
- Registriert seit
- 18.11.2011
- Beiträge
- 457
- Blog Entries
- 1
Thanked 296 Times in 94 PostsAW: [Paper #3] Saubere Struktur bei der Entwicklung
Wann gehts denn hier weiter? Ich würde gerne in die Knuddels-Programmierung per Java einsteigen, weiß aber nicht, wie es hier weiter geht
-
The Following User Says Thank You to Pwned For This Useful Post:
Gurke (08.09.2012)
Ähnliche Themen
-
[Paper #2] Zugriff auf den Knuddelsclient aus Java heraus
Von DMW007 im Forum TutorialsAntworten: 2Letzter Beitrag: 25.10.2016, 18:59 -
e107 v2 in Entwicklung
Von Devon im Forum Web-ApplicationsAntworten: 0Letzter Beitrag: 17.03.2013, 12:18 -
[Übersicht] Tutorials zur Knuddels-Entwicklung
Von DMW007 im Forum TutorialsAntworten: 0Letzter Beitrag: 31.05.2012, 23:53 -
Secret Entwicklung
Von Turbo187 im Forum Fragen & ProblemeAntworten: 11Letzter Beitrag: 10.03.2012, 16:12 -
[Paper #1] Erster Einstieg in die Knuddels-Programmierung
Von DMW007 im Forum TutorialsAntworten: 0Letzter Beitrag: 07.03.2012, 23:31
Stichworte
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.