Raport o stanie Javy (moim skromnym zdaniem)   Leave a comment

  • Artykuł – http://www.infoworld.com/d/application-development/java-faces-tough-climb-catch-net-224372?page=0,2&source=IFWNLE_nlt_stradev_2013-08-08 – o kierunkach rozwoju  Javy. Pojęcie to ma od niedawna dwa znaczenia: nazwa języka programowania oraz nazwa platformy (cały ekosystem innych języków + maszyna wirtualna do ich wykonania). Podobna sytuacja jest od początku w świecie MS – platforma .NET definiuje środowisko wykonawcze a na niej posadzone są języki programowania.
    • Java jako język rozwija się stanowczo za wolno. Za czasów Sun-a Java służyła jako dodatek do sprzedaży hardware (Sparc) produkowanego przez tą firmę, potem kiedy sprzęt Sun-a stał się mniej popularny (był po prostu za drogi wobec procesorów Intel), Sun trochę poluzował i utworzył JCP (grupę doradczą proponującą  kierunki rozwoju Javy jako języka). Dzięki temu nastąpił rozwój ale w grupie były inne firmy sprzętowe (najważniejsza to ta na 3 litery czyli IBM), które opóźniały rozwój z uwagi na własne interesy (braki w modelach sprzętu, środowisku deweloperskim – Eclipse, chęć zwrotu z poniesionych już inwestycji) – sytuacja ta zaznaczyła się szczególnie ostro przy rozwoju specyfikacji komponentów EJB 3, gdzie IBM nie miał w swym serwerze aplikacji Websphere żadnego dla nich wsparcia. IBM jest na tyle perfidna, że wspierała rozwój alternatywny Javy poprzez OpenJDK, rozwój swojego Eclipse czy interfejsu GUI – SWT.
    • Po przejęciu przez Oracle sytuacja niewiele się zmieniła. Firma ta żyje z bazy danych, słynie z polityki wyniszczania innych produktów/stawiania na ich miejscu swych własnych i stawia na kierunek rozwoju javy desktopowej/client-site (JavaFX) jakby zapominając, że prawie wszystko w zakresie GUI co oferuje Swing/JavaFX można uzyskać w przeglądarce internetowej. Obie te technologie przypominają walkę z VB6, 4GL i Flash. Wysiłek idący w ich rozwój wstrzymuje rozwój javy serwerowej.
    • Porównując to z MS i jej .NET widzimy tu przewagę MS – firma zajmuje się oprogramowaniem, trzyma rozwój platformy i języków na niej działających twardo w swych rękach, nie boi się zwrotów (np. odejście od ODBC, RDO, ADO na rzecz OLEDB).
    • Oracle dostał też w spadku kłopoty z bezpieczeństwem i podatnością na ataki w sferze client-site. Stąd głosy poważnych firm zajmujących się bezpieczeństwem do wyłączenia Javy w przeglądarkach i wiadomości o 0-dniowej podatności na ataki. Sytuacja niepokojąca, ale ograniczona na Javy klienckiej, serwerowa strona Javy ma się na szczęście dobrze.
    • Java jako język nie jest już tak ważna. Strategiczna decyzja Oracle powinna rozdzielić platformę Java JVM od języka. Ważnym jest obecność javy w rozwiązaniach chmurowych, ale należy myśleć też o wsparciu dla innych języków (jRuby, node.js, Scala).
  • Kolejny artykuł – http://www.infoworld.com/d/application-development/love-and-hate-java-8-223200?page=0,1&source=fssr. Miłość i nienawiść -czyli mieszane uczucia odnośnie języka Java. Java w wersji 8 będzie za rok w marcu (mówi  się, że opóźnienia są spowodowane problemami z bezpieczeństwem) – czyli słowo innowacyjność nie należy do ulubionego w rozmowach między deweloperami tego języka w firmie Oracle). W wersji 8 czekają nas nowe pojęcia np.  Stream do przeglądania kolekcji w jedną stronę z możliwością wykorzystania wielu rdzdzeni/procesorów (jednoczesność przetwarzania  uzyskuje się za pomocą łącznika ‚parallel’, w MS to ‚async’). Uporządkowano też pojęcie dat – > na wzór JodaTime. Poprawiono również zarządzanie wątkami poprzez rozwój biblioteki java.util.concurrent dostępnej już w wersji  7 (zgodnie z ich twórcą i architektem – Doug Lea (http://g.oswego.edu/).  Przypomina to operacje map/reduce znane np. z przetwarzanie Big Data (Hadoop) – duże ilości danych kopiuje się do pamięci operacyjnej i przetwarza wielowątkowo w postaci równoległych  strumieni danych.  Inną ciekawą sprawą jest TLS SNI (Server Name Idnetification) – chodzi o to, że ciągle większość serwerów używa do adresacji zasobów protokół iPv4 i stosuje sztuczkę korzystania z tego samego adresu IP oraz różnej nazwy wirtualnej hosta i w nagłówkach HTTP obie te informacje są łączone w celu zidentyfikowania zasobu. Jest to dobre ale są kłopoty w przypadku wykorzystania SSL.  Dlatego oczekuje się w tej wersji Javy implementacji SNI w serwerach Oracle takich jak Tomcat w postaci reimplementacji JSSE http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html). Będzie też lepsze wsparcie dla języków dynamicznych w JVM w postaci invokeDynamic (JSR-292: Dynamic Languages on the JVM). Na specjalne wyróżnienie zasługuje node.js, chociaż pierwszym był projekt Rhino (działa jako interpreter)  to jego implemnetacja JS po stronie serwera nikogo nie zachwyciła. Pierwszą serwerową implementacją node.js w maszynie wirtualnej JVM zaoferował Red Hat (http://nodyn.io/). Takie zanurzenie w JVM daje JS bezpośredni dostęp do bibliotek Java. W odpowiedzi Oracle przygotował własną implementację w postaci Node.jar (https://blogs.oracle.com/nashorn/entry/welcome_to_the_nashorn_blog) na bazie specyfikacji ECMAScript 262 Edition 5.1.  Inny link mówi o Nashorn jako implementacji JSR-292: Dynamic Languages on the JVM. Fajny post o tym z punktu widzenia Ruby – http://kaeff.net/posts/why-ruby-and-nodejs-folks-should-care-about-project-nashorn.html. Jaki stąd wniosek – programiści lubią gdy mogą uruchamiać swój ulubiony język w środowisku JVM a nie lubią być zmuszanie do korzystania z Javy.
  • Warto obserwować: podcasts.infoworld.com i www.infoworld.com.

Posted 14 Sierpień 2013 by marekwmsdn in Java

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: