DeVoxx aka JaVoxx aka JavaPolis 2008 Conference anyone?

Devoxx Konferenz Tag 1

Sodele. Ich hab mich dazu entschieden meine Notes einfach mal im Raw-Format zu posten und die nach und nach auszuschmücken.

Keynote:
Wie jede Konferenz began die Devoxx 2008 mit einer Keynote, die sich Schwerpunktmäßig mit dem Thema JavaFX auseinander setzte. http://www.javafx.com/

//TODO ausschmücken...

From Concurrent to Parallel
Diesen genialen Talk hielt niemand geringeres als Mr. Concurrent Java Brian Goetz. Brian ist neben Doug Lea wohl einer der bekanntesten Gurus wenns um Multithreaded Anwendungen geht. Er ist Author von Java Concurrency in Practice (http://jcip.net/) und
der bekannten Java Theory & Practice Artikel Serie bei IBM Developer Works:
http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=practice

Seinen Talk kannte ich schon von der Java One 2008 (ich war nicht da, hab mir aber alle Präsentationen angeschaut) Siehe:
http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-5515&yr=2008&track=javase

Im Vortrag stellte Brian einige Komponenten aus dem java.util.concurrent Package vor welche die Entwicklung von multithreaded Anwendungen erheblich vereinfachten.
Im Zuge der fortschreitenden Entwicklung der CPUs die anstatt die Gigaherzspirale immer weiter nach oben zu treiben mittlerweile eher auf mehrere Kerne (Multi Core) setzt. Muss ein vernünftiges API geben welches die Entwicklung von Anwendungen die diese neuen Möglichkeiten auch voll ausschöpfen können. Genau hier greift u.a. das vorgestellte fork-join Framework ein welches das parallele Verarbeiten von Problemen mit mehreren Threads stark vereinfacht. Als Beispiel für gut parallelisierbare Probleme stellt er beispielsweise Sortieren (via MergeSort), Min/Maximum Suche vor. Grundsätzlich lassen sich alle Probleme parallel Lösen welche man in kleine Disjunkte Teilprobleme zerlegen kann.

http://www.tutorials.de/forum/java-...in-framework-fuer-parallele-berechnungen.html
Ob das fork-join Framework Teil von Java 7 oder einem Update sein wird steht nicht nicht so ganz fest. Ich fänds ziemlich cool wenns käme :)


How to hack and secure Web Applications

In diesem Vortrag gings wie nicht anders zu erwarten um die Sicherheit von Webanwendungen. Ich muss erhlich gestehen, dass ich mir von dem Vortrag ein wenig mehr erwartet habe. Der Vortrage sitzt im Board der OWASP (Open Web Application Security Project) und stellte neben dem Aufbau der OWASP und deren Arbeit noch ein paar Paradebesipiele für Sicherheitslücken von Web Anwendungen dar (Cross Site Scripting und SQL injection) und Wege diese zu schließen.
Um die Sicherheitslücken / Angriffe zu demonstrieren bediente er sich der OWASP Beispielanwendung Webgoat (http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project).
Weiterhin demonstrierte er wie man Webformular Überprüfungen (beispielsweise via Java Script) überlisten kann, in dem man die gesendeten HTTP Request manipuliert. Hierzu verwendete er ein Tool namens Webscarab.

Alles in allem ziemlich bekannt aber nichtdesto weniger interessant :)

Vorgestellt hatte ich mir allerdings sowas wie diesen Talk hier (Java Polis 2004)
http://www.javapolis.com/JP04DVDContent/talks/Hacking/index.html
Dort gings ein wenig mehr in die Tiefe (DNS Spoofing, Session Hijacking, etc.)

http://www.owasp.org/index.php/Main_Page
http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project

The Feel of Scala
In diesem Talk von Bill Venners wurde die Sprache Scala vorgestellt. Was mich hier fasziniert hat war die Vorgehensweise eine neue Sprache vorzustellen. Nicht formal sonder ziemlich Hands-on anhand von kleinen Beispielen. Genau richtig um die Vorzüge dieser funktional orientierten Sprache hervorzuheben. Außerdem demonstrierte er auch die breite IDE Unterstützung die es mittlerweile für Scala gibt (Netbeans, IntelliJ, Eclipse) und zeigte das man sich als Java Entwickler mit Scala beim testen / debiggen ganz schnell heimisch fühlt.

Um die einzelnen Features zu Demonstrieren zeigte Bill seine in Scala geschriebene Test-Bibliothek (ScalaTest) die eine Art interne DSL (Domain Specific Language) für Unit Testing darstellt.

//TODO Beispiele, genauer erklären.

ScalaTest
Internal DSL for testing
implicit Wrapper
Structural Typing

http://www.scala-lang.org/
Scala ToolS:
http://www.scala-lang.org/node/91#ide_plugins
(Netbeans, Eclipse, IntelliJ)
http://www.artima.com/scalatest/


Filty Rich Andriod Clients
Romain Guy zeigte einige Tipps & Tricks zum Thema Android UI Development...
Leider hab ich hier kein G1-Phone mehr abräumen können (war unter den 10 möglichen Kandidaten)

Restful Design, Patterns & anti-patterns
Stefan Tilkov (Excellent)
...
Coole und sehr treffende Einführung zu REST (Represential State Transfer) Webservices.
Er gab viele Pro / Anti Beispiele für REST basierte Schnittstellen.
Links, Everything is a Resource, everything has an ID,...
//TODO genauer beschreiben...
 
Devoxx Konferenz Tag 2

1) KeyNote
Effective Java Reloaded (Generics -> PECS, Enums, Singletons -> Enum!)
Josh Bloch
http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-6623&yr=2008&track=javase
Der Talk war der gleiche wie auf der Java One 2008. Alle Codebeispiele findet man übirgens hier:
http://java.sun.com/docs/books/effective/

Java SE Update / Modularization

2) Towards a Dynamic VM
Brian Goetz
MethodHandles, Multi Dispatch, Interface Injection, Invoke dynamic...
JSR-292, including invokedynamic, interface injection, tail calls

3) Quickies
ESB in Financial Industries
DDD ...

4) Don't do it- Common Performance Anti-Patterns
Bla Talk...
Performance tests als wichtiger Bestandteil des Entiwcklungsprozesses in jeder Iteration,
Performance beauftragten. Performance Ziele definieren und mit Profiler überprüfen.

5) how do we test this stuff?
Web Apps test
Selenium...
http://seleniumhq.org/


6) JEE 6 Overview
Langweilig...
Updates der Fortschritte im JCP
Was gibts neues in JEE 6

EJB 3.1:
http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-5343&yr=2008&track=javaee
Java Servlet 3.0 API:
http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-5415&yr=2008&track=javaee
Java Persistence API 2.0:
http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-5509&yr=2008&track=javaee

7) Terracotta - real Apps, Real Frameworks, Real usecases
Clustered JVM ... cool :)


Abends Hacking :)
Auf den Film hatten wir nicht so viel Lust- wir wollten lieber Hacken. Aber zuerst gönnten wir uns ein schönes Abendessen
und anschließend gings mit den frisch aufgeladenen Notebooks wieder in die Hotel Lounge und dann gings ans Hacken.

Dynamic Proxies:
Generics
Java interna
etc.

http://www.tutorials.de/forum/algor...se-tabelle-welches-backend-wie-sortieren.html
 
Devoxx Konferenz Tag 3

1) JRuby
http://jruby.codehaus.org/
In diesem Talk der beiden JRuby Entwickler: Charles Nutter und Thomas Enebo gings um die Details der neuesten
Implementierung der dynamischen Programmiersprache Ruby für die JVM: JRuby.
Neben eingen Ruby Basics wurden auch einige essentielle Tools wie die jirb-Konsole (Kommandozeileninterpreter),
rake (Ruby make) und ruby gems (Paketverwaltungssystem analog zu den setuptools / eggs in Python) vorgestellt.
Darüber hinaus zeigten sie auch wie schnell und einfach man webanwendungen auf Basis von JRuby on Rails entwicklen kann,
dabei ließen sie die Rails app direkt als Webapp in einem Glasfish laufen.

Neben der Webentwicklung blieb auch die traditionelle Gui Entwicklung mit Swing nicht auf der Strecke.
Hier wurde demonstriert, wie einfach man mit JRuby, Netbeans, Netbeans Gui Builder Matisse und MonkeyBars:
http://monkeybars.rubyforge.org/ Monkey bars erlaubt es die traditionellen UI Entwicklertools zu verwenden und
die Anwendungslogik in Ruby hinzuschreiben.

Als keinen Gag implementierten die Speaker ein kleines Pong Spiel in 3D auf Basis des Gaming Frameworks JMonkeyEngine.
http://www.jmonkeyengine.com/

Ein weiterer Interessanter Talk zum Thema JRuby findet man hier:
http://www.youtube.com/watch?v=PfnP-8XbJao
Kleine Anmerkung am Rande. Vergleicht man die aktuelle Implementierung von JRuby (auf dem Stand von Ruby Version 1.8.6)
mit der stabilen Rubi Version 1.8.6 so sieht man, dass JRuby eine ganze Ecke schneller ist als die "native" Ruby
Implementierung ;-)

Zur Verteidigung der Rubisiten muss man sagen, dass die Ruby Version 1.9 schon wieder eine Ecke schneller ist als
die aktuelle JRuby version. Warten wir mal ab was die JRuby Entwickler da noch rausholen können :)


Siehe auch hier:
http://antoniocangiano.com/2007/12/03/the-great-ruby-shootout/

2) Developing Beyond LocalHost
In diesem Talk von Brian Leonard gings um das Testen von Anwendungen auf verschiedenen Platformen bzw. verschiedenen
Browsern bei Webanwendungen.
Als Beispiel entwickelte er eine kleine Java Webstartanwendung die er unter verschiedenen Betriebssystemen testen wollte.
Zu diesem Zweck hat er sich einfach ein paar Virtuelle Maschinen mit Virtual Box angelegt die über ein internes
Netz miteinander verbunden waren. So kann sich die einzelnen Maschinen untereinander / mit dem Hostsystem interagieren.

Er betonte nachhaltig die wichtigkeit des Testens auf mehreren Platformen und wie Virtualisierungstools
wie Virtual Box oder VMWare dem Entwickler dabei unterstützen können.

Übrigens VMWare Images kann man mit einfachen Modifikationen auch mit Virtual Box verwenden :)
Ach ja, Virtual Box ist natürlich auch Kostenlos :)
https://wiki.ubuntu.com/UbuntuMagaz...irtualBox:_.vmdk_To_.vdi_Using_Qemu_+_VdiTool
http://www.virtualbox.org/

3) EJB 3.1 - From Legacy to secret weapon
Der Abschluss der Konferenz bildete der absolut coole Talk von Sun Java Champion Adam Bien :)

In aktuellen Enterprise Projekten findet man vermehrt leichtgewichtige Anwendungsframeworks á la Springframework
die das leben des Entwicklers sehr viel einfacher machen (sollen). Zum Teil ist es unter Entwicklern im Enterprise Java Bereich
sogar verpönt, alternativen wie EJB 3.x überhaupt zu erwägen.
Was bedeutet lightweigth überhaupt (wenige Abhängigkeiten?, Kleiner Bootstrap?, kleine Bibliotheken?,wenig Code viel XML?)
...

Er zeigte sehr deutlich auf, wie einfach (lightweight) EJB 3.x mittlerweile ist und was mit EJB 3.1 noch einfacher
wird.

Interceptoren: (AOP Advice) müssen am Ziel deklariert werden (das stört u.a. viele Spring anhänger)
da die es gewohnt sind solche Advices rein deklarativ an zugeben anstatt sie direkt an die Zielstelle zu schreiben.
Hier Argumentiert Adam Bien, dass solch deklarativen Fälle eher etwas für technische Advices (tracing, profiling, security)
fachliche Advices will am vielleicht doch an Ort und stelle sehen.

Ansonsten zeigte Adam Bien wie durch die Abstraktionen von JPA das DAO Pattern so gut wie obsolete wird (okay nicht ganz)
darüber hinaus zeige er auch eine generische DAO Implementierung mit der sich (wie so oft) 80% der Datenbankzugriffe handlen lassen.
Für den Rest muss man dann doch wieder eigene Finder Methoden bauen etc.

Siehe auch:
http://www.adam-bien.com/roller/abien/entry/jpa_ejb3_killed_the_dao
http://www.tutorials.de/forum/enter...ng-co/283835-strukturierung-webanwendung.html

Hier ein paar Beispiele zur JEE 5 Patterns:
https://p4j5.dev.java.net/
https://p4j5.dev.java.net/source/browse/p4j5/

Weiterhin zeigte er noch ein paar Features von EJB 3.1
features aufzählen...

Insgesamt hat der Talk gezeigt, dass man EJB 3.x auf jeden Fall mal wieder ansehen sollte und nicht
gleich kategorisch alles schlecht macht wo kein grünes Blättchen dran klebt.
 
Zurück