Die Code Competition 02/2016 hatte die durchaus anspruchsvolle Aufgabenstellung, einen parallelen (also threadbasierten) Webserver zu programmieren, der Anfragen auf Port 80 beantwortet und die Möglichkeit des DirectoryListing bietet.
IT-Talents: Matthias, herzlichen Glückwunsch zum 3. Platz bei der Code Competition 02/2016 zum Thema „Paralleler Webserver“. Stell Dich den anderen IT-Talenten doch kurz vor.
Matthias: Vielen Dank! Ich komme aus dem beschaulichen Ostfriesland und studiere hier an der Hochschule Emden/Leer den Studiengang Industrial Informatics. Für meinen Lebensunterhalt bin ich nebenbei noch als IT-Berater tätig. Wenn dann noch Freizeit bleibt, bin ich gerne mit meinem Motorrad unterwegs, oder spiele Squash mit meiner Partnerin.
IT-Talents: Was hat Dich motiviert, an der Competition teilzunehmen?
Matthias: Zuerst einmal die Preise, denn ich konnte sie alle gut gebrauchen 😉 . Aber auch die Aufgabe selbst hat mich angesprochen, da sie genau meinen Interessenbereich traf. Zu guter Letzt benötigte ich sowieso noch einen Webserver für eines meiner Projekte.
IT-Talents: Und wie bist Du auf die Code Competition aufmerksam geworden?
Matthias: Der Beitrag wurde in meiner Timeline bei Facebook angezeigt.
IT-Talents: Wie bist Du an die Lösung der Aufgabenstellung heran gegangen, und wieso hast Du Dich für die Programmierung in Java entschieden?
Matthias: Zu prüfen ob Java erlaubt war, war das Erste was ich gemacht habe. Das hatte den einfachen Grund, dass ich in Java viel Übung habe und somit Zeit sparen konnte. Einen parallelen Server hatte ich zudem schon mal für eine privat entwickelte Android-App implementiert.
IT-Talents: Welche Probleme sind bei der Entwicklung der Software aufgekommen? Wie lange hat die Entwicklung gedauert?
Matthias: Eines der größeren Herausforderungen war, dass die Software unter Linux als auch unter Windows läuft. Dies habe ich erst im anschließendem Test unter Windows bemerkt, da es Probleme mit einigen Dateifunktionen gab. Insgesamt hat die Entwicklung mit Tests ca. 5 Stunden gedauert.
IT-Talents: Sehr interessant, was hast Du durch die Entwicklung gelernt?
Matthias: Ich habe die Dateifunktionen von Java kennengelernt, mit denen ich bis jetzt nicht viel Erfahrung gesammelt hatte. Zusätzlich konnte ich gleich Lernen, dass nicht alle Funktionen für den Dateizugriff genutzt werden können, wenn man mehrere Betriebssysteme unterstützen möchte.
IT-Talents: Kannst Du uns kurz erklären, wie Du die Parallelisierung implementiert hast?
Matthias: Für die Clientverbindung habe ich eine Klasse mit Runnable -Interface implementiert. Diese enthält die Logik der Verbindung: den Webserver. Nachdem sich ein Client verbindet, erhält man in der Hauptschleife ein ClientSocket-Objekt. Damit wird über den Konstruktor aus der Klasse ein Objekt erzeugt und in einem Thread gestartet. Danach kann man in der Hauptschleife wieder auf neue Verbindungen warten, während die Client-Threads die Verbindungen bedienen.
IT-Talents: Was würdest Du Dir thematisch gerne einmal als Code Competition wünschen?
Matthias: Schwierige Frage. Aber aus aktuellem Anlass würde ich als Schwerpunkt Sicherheit wählen, damit sich die Talente von morgen mit den Security-Bibliotheken Ihrer Wunschsprache auseinandersetzen um die Software von morgen sicherer zu machen. Das Thema muss ja nicht unbedingt vorgegeben werden, der eine macht eine sichere IM-Software, der andere vielleicht den kleinen Bruder von TrueCrypt.