18 listopada 2010

Praca inżynierska z JSF2? Może jednak CDI i OSGi?

Kilkakrotnie pytano mnie o tematy prac inżynierskich i magisterskich, a wtedy zaczyna się główkowanie, który byłby tym jedynym, interesującym. Kiedy wyszła Java EE 5 byłem zachwycony zmianami, podobnie z JEE6. Było też zainteresowanie OSGi i okolicami, teraz programowanie funkcyjne z Clojure, a w odwodzie kilka innych, mniej lub bardziej ciekawych zagadnień. Nawet dzisiaj zostałem poproszony o wyznaczenie tematów do przedstawienia studentom w ramach praktyk studenckich w IBM i w mgnieniu oka miałem 10 sztywno określonych i jeden otwarty, który rozpoczynał się od "Rozpoznanie wybranej funkcji* produktu z rodziny IBM WebSphere BPM". Współpraca ze studentami to niezwykle ciekawy i produktywny sposób na poznawanie nowego (człowieka i jego sposobu myślenia oraz samego tematu). Wszyscy zadowoleni.

Postanowiłem rzucić temat wyszukania czegoś ciekawego na bloga licząc, że ktoś ma pomysł w zakresie JavaServer Faces (JSF) 2.0, a boryka się z problemem braku czasu na jego dogłębne rozpoznanie w postaci pracy licencjackiej (to jakby nie patrzeć rok ślęczenia nad tematem!).

Autor ostatniej prośby napisał:

Czy istnieje możliwość nawiązania współpracy w zakresie mojej pracy inżynierskiej, naturalnie związanej z korporacyjną Javą. Chciałbym zrealizować temat nie tylko wartościowy merytorycznie ale i również interesujący z punktu widzenia programisty, wolałbym uniknąć pracy odtwórczej i skupić się na tym co mógłbym poprzez swoją pracę dyplomową wnieść od siebie. Jestem już po wstępnej rozmowie z moim promotorem, z którym rozważaliśmy możliwość podjęcia tematu związanego mniej lub bardziej z JSF 2.0. Wiem, że jesteś otwarty na różnorodne propozycje, dlatego po cichu liczę na email od Ciebie przesiąknięty entuzjazmem, który mnie nie opuszcza nawet na krok podczas rozważań nad tematem mojej pracy.

Na moją odpowiedź, raczej w tonie ostrożnej aprobaty, otrzymałem taką:

Dzięki za zainteresowanie moją propozycją, tak jak już wcześniej wspomniałem chciałbym poprzez swoją pracę dyplomową wnieść coś od siebie. Wykorzystanie JSF2 do zbudowania przykładowej aplikacji webowej jest ostatecznym rozwiązaniem, którego nawet nie chcę brać pod uwagę. Idealnym rozwiązaniem byłby temat oryginalny oraz interesujący.

W kwestii tematu właśnie liczyłbym na Twoją pomoc, z pewnością są zagadnienia związane z JSF2, którymi zainteresowany jesteś najbardziej. Wiedzę w tej dziedzinie masz nieporównywalnie większą niż moja, stąd zapewne mógłbyś zaproponować kilka interesujących pomysłów. Może istnieje jakieś komercyjne narzędzie (lub jego część), które czeka na swoją ogólnodostępną implementację? A może masz zupełnie inny pomysł na temat pracy?


I tutaj pojawiła się moja odpowiedź, już z wstępnym szkicem zakresu technologicznego pracy:

JSF2 jest ciekawe, ale coś mi mówi, że wiele tu już zrobiono i ciekawym mogłoby być użycie innej technologii tworzenia UI niż facelets czy JSP. Przyjrzałbym się jednak bardziej użyciu CDI w JSF i co do tej pory zrobiono. CDI jako rozwiązanie javowe weszło dopiero w JEE6, więc jest bardzo młode i pewnie wiele tutaj do zrobienia. Gdybym miał szukać ciekawego tematu właśnie koło CDI kręciłbym się, może w połączeniu z OSGi?! Właśnie CDI + OSGi wydaje się być nietrywialnym tematem dotykającym dwa rozwiązania. To byłoby cudo techniczne!

Uważacie, że JSF2, CDI i OSGi mogłoby być "produktywnym" stosem technologicznym? Co mógł(a)byś Ty zaproponować delikwentowi? Mnie zawsze intrygowało, czy dałoby się tak użyć JSF, aby zbudować aplikację desktopową? W końcu JSF dotyka warstwy widoku i aplikacje webowe są jedynie/aż implementacją referencyjną demonstrującą oferowane możliwości (albo ich brak) budowania niebagatelnego interfejsu użytkownika. Gdyby relacjonować JSF2, czy byłoby cokolwiek, co stanowiłoby dla Ciebie szczególnie ciekawe zagadnienie? Wszelkie propozycje będą uważnie rozpatrzone, a upublicznione mają niemałe szanse na realizację. Dla mnie będzie to stanowiło magnes do powrotu do Java EE 6, które zeszło na plan drugi po pojawieniu się Clojure, dla Ciebie zrealizowanie pomysłu cudzymi rękoma, a pytającemu zapewnią ciekawe spędzenie czasu przy pracy inżynierskiej. Wszyscy są do przodu!

[*] Dowiedziałem się dzisiaj, że nie ma liczby mnogiej od "funkcjonalność", a można mówić jedynie o funkcjach produktu (!)

4 komentarze:

  1. Pisząc do Ciebie odnośnie swojej pracy inżynierskiej czułem, że wymiana zdań zaowocuje interesującymi pomysłami. Przyznam, że zaskoczyłeś mnie nadając sprawie taki rozgłos, ale to dobrze biorąc pod uwagę fakt, iż w ten sposób temat pracy może zyskać na oryginalności a pomysłodawca otrzymać odpowiedzi na nurtujące go pytania. Tak jak napisałeś "Wszyscy są do przodu!".

    OdpowiedzUsuń
  2. Ostatnio też mi przyszedł pomysł na pracę powiązaną z IBM ;) To znaczy, wszelkie narzędzie modelujące czy to UML czy diagramy ER itp. mają w Eclipse paskudne, bądź straszne, tudzież tragiczne layouty automatyczne. Nie czytelne kiepskie i rozległe. Istnieją narzędzie które sobie lepiej radzą (graphviz!) i algorytmy, które się sprawdzają ale są trochę wolne (modelowanie fizyki odpychania/przyciągania).


    I trick polega na tym, że korzystając z GPU, które ma znacznie większą całościową moc obliczeniową niż CPU można pokusić się o nowe algorytmy (lub implementacje starych ale nie nadających się do użytku na CPU) za pomocą nowych zabawek jak JCuda albo Aparapi(http://developer.amd.com/zones/java/assets/java_one_S313888.pdf), pewnie mało to enterprise ale obstawiam, że bardzo wymagające umiejętności programowania współbierznego. A może da się tu jakoś Clojure zaciągnąć ;)

    OdpowiedzUsuń
  3. E tam, od każdego rzeczownika da się urobić liczbę mnogą, nawet od singulariów tantum. :)

    OdpowiedzUsuń
  4. OSGI w webie? A może tapestry 5 w takiej postaci: http://blog.tapestry5.de/index.php/2010/01/19/tapestry-ioc-modularization-of-web-applications-without-osgi/
    Nie jestem jednak na tyle mocny by wchodzisz w dyskusję. Bardziej chciałem się odnieść do tej części o desktopie w jsf. Wprawdzie nie o samym jsf myślałem, ale projektowałem kiedyś app, która była by uruchamiana w przeglądarce, ale startowała by jak zwykły desktop. Do tego potrzebne by było jetty i h2 (tomcat i inne db też się da posadzić pewnie). Instalator do czegoś takiego można dorobić nawet a start aplikacji = start webserwerka i db. Przeglądamy przy pomocy ulubionego narzędzia. Trochę zabawy, ale jak dla mnie do dziś jest to ciekawa idea, tylko jak zawsze, czasu brak.

    OdpowiedzUsuń