- 
	31.05.2012, 23:25 #1Projektleitung    
 - Registriert seit
- 15.11.2011
- Beiträge
- 8.449
- Blog Entries
- 5
 Thanked 9.518 Times in 3.333 Posts [Paper #3] Saubere Struktur bei der Entwicklung [Paper #3] Saubere Struktur bei der EntwicklungVorwort 
 
 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:
 
 Anschließend sollte eine Leerzeile folgen (also einfach 1x Enter drücken) - nun noch abspeichern und fertig.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:
 
 Das @ am Anfang bedeutet, dass der Befehl nicht auf der Konsole ausgegeben wird, was hier nicht notwendig ist und nur die Übersicht stören würde.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:
 
 * ist ein regulärer Ausdruck und auch als Joker-Zeichen bekannt. *.class bedeutet einfach alle Dateien mit der Dateiendung .class.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.
 
 Im Ordner dist legen wir einen neuen Ordner temp an und wechseln in diesen.Code:javac -cp %cp% src\*.java 
 
 Den Ordner brauchen wir, weil nun dasselbe passiert wie in #2: Alles wird in einen Ordner geklatscht.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
 
 Dasselbe machen wir mit dem Applet und dem ani-Archiv, das wir allerdings nicht kopieren, sondern in diesen Ordner entpackenCode:xcopy ..\..\src\*.class . /Y 
 
 Der netscape-Ordner darf natürlich auch nicht vergesen werden:Code:jar xf ..\..\lib\knuddelsk%version%.jar jar xf ..\..\lib\ani%version%.jar 
 
 Da nun alles beisammen ist, erstellen wir aus dem ganzen Kram ein Jar-Archiv mit der zuvor erstellten Mainfest:Code:md netscape xcopy ..\..\lib\netscape\* netscape /S /Y 
 
 Und der Client ist fertig, alles in einem automatisch startenden Jar-Archiv drin.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:
 
 An den Schluss würde ich noch einCode:cd .. rmdir /S /Q tmp 
 
 setzen, damit wir im Fehlerfall die Fehlermeldung lesen können und sich das Script nicht schließt.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
 
 starten.Code:java -jar Client90alw.jar 
 
 Vorteile:
 
  Übersichtliche Verzeichnisstruktur Übersichtliche Verzeichnisstruktur
  Client kann einfacher geupdatet werden 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 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 #2U-Labs Routinier  
 - Registriert seit
- 18.11.2011
- Beiträge
- 457
- Blog Entries
- 1
 Thanked 296 Times in 94 Posts AW: [Paper #3] Saubere Struktur bei der Entwicklung AW: [Paper #3] Saubere Struktur bei der EntwicklungWann 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 herausVon DMW007 im Forum TutorialsAntworten: 2Letzter Beitrag: 25.10.2016, 18:59
- 
  e107 v2 in EntwicklungVon Devon im Forum Web-ApplicationsAntworten: 0Letzter Beitrag: 17.03.2013, 12:18
- 
  [Übersicht] Tutorials zur Knuddels-EntwicklungVon DMW007 im Forum TutorialsAntworten: 0Letzter Beitrag: 31.05.2012, 23:53
- 
  Secret EntwicklungVon Turbo187 im Forum Fragen & ProblemeAntworten: 11Letzter Beitrag: 10.03.2012, 16:12
- 
  [Paper #1] Erster Einstieg in die Knuddels-ProgrammierungVon 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.
 
									 
														 
														 
					
					
					
						 Zitieren
  Zitieren