Rückblick JavaLand

Diese Woche gab das „Ja­va­land“ sei­nen Ein­stand – der erste Durch­lauf der Kon­fe­renz fand auf dem Ge­län­de des Phan­ta­si­a­lands statt. Ich war sehr neu­gie­rig auf Leute, Vor­trags­ni­veau, und wie sich die Kon­fe­renz im Ver­gleich zur JAX plat­zie­ren würde. Ins­ge­samt 800 Teil­neh­mer kamen zur Pre­mie­re, das Vor­trags­pro­gramm wurde aus über 400 Ein­rei­chun­gen aus­ge­wählt.

Das Ja­va­land zielt ähn­lich wie die JAX auf das über­re­gio­na­le, deutsch­spra­chi­ge Pu­bli­kum (mit einem leich­ten in­ter­na­tio­na­len An­strich). Wäh­rend die JAX dem gän­gi­gen Kon­fe­renz-Tem­pla­te folgt, ver­sucht das Ja­va­land „an­ders“ zu sein: Hier soll die Ja­va-Com­mu­ni­ty und das Ken­nen­ler­nen von Leu­ten und neuen Tech­ni­ken in den Vor­der­grund ge­rückt wer­den. Al­lein schon die un­ge­wöhn­li­che Lo­ca­ti­on war ein star­kes Si­gnal hier­für.

Es gab einen stets be­leb­ten Com­mu­ni­ty-Be­reich (auf dem CCC-Con­gress hätte man es wohl „Hack­cen­ter“ ge­nannt) mit Tisch­grup­pen zum ge­mein­sa­men Coden oder Steh­ti­schen und Sitz­sä­cken zum Plau­dern. An ei­ni­gen Ti­schen hat­ten sich an­ge­kün­dig­te Com­mu­ni­ty-Pro­jek­te nie­der­ge­las­sen, so gab es die Mög­lich­keit, Pro­jek­te mit Le­ap­Mo­ti­on oder der Ocu­lus Rift an­zu­se­hen oder beim „adopt a JSR“ über noch in der Dis­kus­si­on be­find­li­che JSRs nä­he­res zu er­fah­ren und diese aus­zu­pro­bie­ren.

Der üb­li­chen Mita­g­es­sens-Run wurde da­durch ent­zerrt, daß das Pro­gramm non­stop durch­lief und das Mit­tags­buf­fet über län­ge­re Zeit da­stand. So hatte jeder die Wahl, in der Pause zwi­schen zwei Talks schnell etwas zu essen oder eine der Ses­si­ons wäh­rend der Mit­tags­zeit kom­plett aus­zu­las­sen.

Neben den vier re­gu­lä­ren Tracks gab es drei, von Fir­men ge­spon­sor­te Vor­trags­tracks. Diese waren aber er­fri­schend frei von rei­nen Ver­kaufs­ver­an­stal­tun­gen, son­dern eine echte Er­gän­zung zum rest­li­chen Pro­gramm. Dem­entspre­chend schwer war die Ent­schei­dung bei der Wahl der Talks…

sca­laz-Ein­füh­rung für Java Pro­gram­mie­rer

Eine Ein­füh­rung in sca­laz, ohne eine Sca­la-Ein­füh­rung und ohne eine Has­kell-Ein­füh­rung zu sein, und das in 45 Mi­nu­ten – das klang am­bi­tio­niert. Der Vor­trag ver­such­te, das Kap­seln von Sei­ten­ef­fek­ten mit­tels Mo­na­den nä­her­zu­brin­gen (und bei der Ge­le­gen­heit das un­säg­li­che Durch­schlei­fen von Sei­ten­ef­fek­ten zur Lauf­zeit durch An­no­ta­ti­ons-Ma­gic los­zu­wer­den). Ich fürch­te, für Leute ohne Vor­be­las­tung auf dem Ge­biet war das alles etwas zu schnell; was aber in jedem Fall ge­blie­ben sein dürf­te: Es gibt eine Al­ter­na­ti­ve zum Ein­schlei­fen von Kon­text über Bi­blio­thek­ten und An­no­ta­tio­nen, und der ist mit Scala oder den Ja­va8-Lam­d­as sogar recht ele­gant.

Her­aus­for­de­run­gen der Event Loop am Bei­spiel von vert.x

Re­ac­tive Pro­gramming ist (min­des­tens) ein wich­ti­ger Trend. Der Vor­trag mo­ti­vier­te über Zeit­ver­lus­te al­lein durch das Lock-Ma­nage­ment (War­te­zei­ten und Dead­locks wur­den da noch gar nicht be­rück­sich­tigt) das Nach­den­ken über Lock-freie An­sät­ze; event­loop-ba­sier­te Sys­te­me wie vert.x ver­schie­ben alle even­tu­ell an­fal­len­den Sper­ren in die Bi­blio­thek und bie­ten dem Ent­wick­ler eine Um­ge­bung, in der keine Sper­ren not­wen­dig sind (bzw. über­haupt nicht be­nutzt wer­den soll­ten).

Ein wei­te­res Thema, das in ähn­li­cher Form im nächs­ten von mir be­such­ten Talk wie­der auf­tauch­te, waren „Mi­cro­ser­vices“, also die Idee, weg von mo­no­li­thi­schen, durch­de­sign­ten Sys­tem­bo­li­den hin zum Zu­sam­men­set­zen von gro­ßen An­wen­dun­gen aus klei­nen, ein­fa­che­ren Tei­len. Üb­li­cher­wei­se wird hier eine Or­ches­trie­rung mit­tels REST-APIs (oder ähn­li­ches) emp­foh­len (da gab es vor ein, zwei Jah­ren einen Talk auf InfoQ – wenn ich ihn nur wie­der­fin­den würde… war ver­mut­lich der Talk von von Jim Web­ber über „Gue­ril­la SOA“ oder Jim Web­bers und Mar­tin Fow­lers Keyno­te „Does my bus look big in this?“ ), mit vert.x ist die Idee aber eben­falls um­setz­bar: Die ein­zel­nen Mo­du­le („Ver­ti­cles“) las­sen sich zur Lauf­zeit star­ten, be­en­den, up­daten und kom­mu­ni­zie­ren aus­schlie­ß­lich mit JSON-Nach­rich­ten. Auch wenn ich von der Idee von rei­nem JSON ohne ir­gend­ei­ne In­ter­face-De­fi­ni­ti­on noch nicht ab­schlie­ßend über­zeugt bin: Diese Idee läßt sich somit 1:1 mit vert.x um­set­zen. Dabei pro­fi­tiert man ei­ner­seits von der Sprach­viel­falt von vert.x (es gibt APIs von Java über Scala bis Clo­ju­re) und an­de­rer­seits von Frame­work-Fea­tures wie dem au­to­ma­ti­schen Clus­te­ring und Han­do­ver beim Aus­fall eines Kno­tens, was man sich in einer an­de­ren Um­ge­bung erst mü­he­voll selbst bauen müßte.

Alles in allem eines mei­ner High­lights des Tages, ich emp­feh­le, Fo­li­en und Li­te­ra­tur­hin­wei­se durch­zu­ar­bei­ten.

Ar­chi­tek­tur 201x

Ste­fan Til­kov kün­dikt einen Talk an, damit ist ein vol­ler Saal quasi ga­ran­tiert ;-) Die­ser Talk war ein Plä­doy­er für Mi­cro­ar­chi­tec­tu­res: Baut keine An­wen­dun­gen, die so groß sind, daß sie spä­ter nie­mand mehr um­bau­en, ge­schwei­ge denn er­set­zen kann – „build for re­pla­ce­ment, not for reuse“. Strebt nach der Unix-Phi­lo­so­phie, ein­zel­ne, mög­lichst se­pa­rat funk­tio­nie­ren­de Teile, die eine ein­zel­ne, iso­lier­te Auf­ga­be mög­lichst gut er­fül­len – und baut An­wen­dun­gen, indem man diese Ein­zel­tei­le dann zu­sam­men­steckt.

Ein guter Denk­an­stoß – und die Er­wäh­nung einer bei­na­he un­über­schau­ba­ren Fülle von Tools, Bi­blio­the­ken und Frame­works, die einen bei einer sol­chen Her­an­ge­hens­wei­se un­ter­stüt­zen.

End­lich si­che­re Web­an­wen­dun­gen in Java

Nach­dem ich das Buch des Au­tors über Java Web­s­e­cu­ri­ty als Gut­ach­ter durch­le­sen durf­te, war ich na­tür­lich ge­spannt, was er in einem Vor­trag er­zäh­len würde ;-) Es ging um SQL-In­jec­tion, XSS und XSRF. Er de­mons­trier­te die Ver­wen­dung des Zed At­tack Proxy (ZAP) und wie man mit ihm als „Na­gel­pro­be“ die ei­ge­ne An­wen­dung auf Pro­ble­me ab­klopft. Sein Fazit deck­te sich in­zwi­schen mit dem mei­nen: Ge­eig­ne­te Bi­blio­the­ken wäh­len, wel­che die Si­cher­heits­pro­ble­me für den Pro­gram­mie­rer adres­sie­ren – aber den­noch be­scheid wis­sen, um nicht ver­se­hent­lich den Schutz der Tools zu um­ge­hen.

Web Se­cu­ri­ty rund um die An­mel­dung

Im letz­ten Slot des Tages durf­te ich mei­nen Vor­trag hal­ten (die Fo­li­en gibt es hier). Trotz des gro­ßen An­ge­bots und der vor­ge­rück­ten Stun­de hatte ich rund 80 Zu­hö­rer im Pu­bli­kums­raum. Mein Talk schloß (un­ab­ge­spro­chen) fast di­rekt an den vo­ri­gen Talk an. Mir war es ein An­lie­gen, auf di­ver­se Fein­hei­ten (und An­griffs­for­men) im Ses­si­onma­nage­ment und dem Um­gang mit den User­pass­wör­tern hin­zu­wei­sen, da hier be­deu­tend mehr Ver­ant­wor­tung beim Ent­wick­ler/Ar­chi­tek­ten liegt und das Pro­blem nicht ein­fach mit der Ver­wen­dung einer ge­eig­ne­ten Bi­blio­thek zu lösen ist.

Dem Feed­back nach dem Vor­trag zu ur­tei­len hat es den Leu­ten sehr gut ge­fal­len und mehr als nur ein­mal einen über­rasch­tes „Aha!“ her­vor­ge­ru­fen.

Der Abend, Open Park

Da ich in der­sel­ben Nacht wie­der gen Hei­mat mußte, war das die letz­te Ge­le­gen­heit für viele Ge­sprä­che – und einer kur­zen Runde durch den Ver­gnü­gungs­park, der ei­ni­ge At­trak­tio­nen für drei Stun­den öff­ne­te. Sowas ist doch ein Kind­heits­traum: Ein fast men­schen­lee­rer Park, War­te­zeit für die erste Reihe in der „Black Mamba“ ca. 3 Mi­nu­ten – wooooow! Ich glau­be, wir haben das Pen­sum eines durch­schnitt­li­chen Som­mer-Ta­ges­be­suchs in an­dert­halb Stun­den ab­ge­ar­bei­tet ;-)

Ir­gend­je­mand hatte üb­ri­gens die Ner­ven weg und hat die Fahrt aus der ers­ten Reihe ge­filmt – damit ihr die Be­geis­te­rung nach­voll­zie­hen könnt :-)