Přednášky o Javě na konferenci FOSDEM 2011

Pavel Tišnovský 10. 2. 2011

Tento víkend se v Bruselu konal další ročník konference FOSDEM (Free and Open Source Software Developers' European Meeting). Na této konferenci proběhlo několik set přednášek s různými tématy – od úprav kernelu přes tvorbu balíčků pro různé distribuce až po přednášky orientované na jednotlivé programovací jazyky.

Obsah

1. Přednášky o Javě na konferenci FOSDEM 2011

2. Plánovaný rozpis přednášek o Javě

3. Současný stav OpenJDK 6

4. Budoucnost JDK 7 a OpenJDK 7

5. Nové vlastnosti JDK 7 a OpenJDK 7

6. SystemTap – sledování procesů běžících v systému

7. Projekt PHP.reboot

8. Obsah druhé části článku

9. Odkazy na Internetu

1. Přednášky o Javě na konferenci FOSDEM 2011

Konference FOSDEM neboli Free and Open Source Software Developers' European Meeting je jedna z největších evropských konferencí zabývajících se otevřeným softwarem. Historie této konference je již poměrně dlouhá, protože její první ročník proběhl již v roce 2001, tehdy ovšem ještě pod názvem OSDEM (rozšíření názvu této konference o slovo Free bylo provedeno na žádost Richarda Stallmana, který mimochodem měl na této konferenci i několik přednášek). Témata, o kterých se na FOSDEMu přednáší, zasahují do prakticky všech oblastí, v nichž se otevřený software používá – od různých přenosných či jednoúčelových zařízení až po servery či dnes tak populární cloudy. Od roku 2004 a především pak po vydání OpenJDK společností Sun Microsystems v roce 2006 se na této konferenci začaly čím dál tím více množit i přednášky o programovacím jazyku Java, běhovém prostředí tohoto jazyka i technologiích, které jsou nad Javou či jeho běhovým prostředím postaveny.

V letošním ročníku konference FOSDEM byla pro přednášky týkající se přímo programovacího jazyka Java či implementací Javy a jejího rozšíření na různé platformy vyhrazena v obou víkendových dnech samostatná přednášková místnost, která však většinou neměla dostatečnou kapacitu pojmout všechny posluchače (to je ovšem na FOSDEMu běžné a taktéž pochopitelné, protože celkový počet účastníků se nepočítá ani v desítkách nebo stovkách, ale v tisících). Sice se jednalo o stejnou místnost, jaká byla pro Javu vyhrazena předchozí rok, ovšem počet přednášek i jejich celková délka narostla. V následujících odstavcích se zmíním o některých přednáškách, které se týkaly především nových vlastností implementovaných v OpenJDK 7 a taktéž toho, jakým směrem bude další vývoj JDK a především OpenJDK s velkou pravděpodobností směřovat. Na tomto místě je vhodné dodat, že mezi přednášejícími byli i zaměstnanci firmy Oracle a diskuse o některých problematických věcech, například o způsobu práce JCP [link] či o způsobu obsazení OpenJDK Governing Board [link], byla kupodivu velmi otevřená, a to jak ze strany komunity, tak i ze strany zástupců společnosti Oracle.

2. Plánovaný rozpis přednášek o Javě

V následující dvojici tabulek je uveden původní rozpis přednášek týkajících se buď přímo programovacího jazyka Java nebo některé z technologií, které s tímto jazykem nebo jeho virtuálním strojem a běhovým prostředím souvisí. Ve skutečnosti však některé přednášky neproběhly. Jedná se například o přednášku Why Linux Distributions Hate Java, která mohla být již podle svého názvu a abstraktu velmi zajímavá.

Sobota 5. 2. 2011

Přednáška Přednášející
Welcome to Java Sans Frontiéres Tom Marble
State of OpenJDK Mark Reinhold, Joe Darcy
IcedRobot: The GNUlization of Android David Fu Mario Torre
Why Linux Distributions Hate Java Thierry Carrez
The Java Packaging Nightmare Torsten Werner
Guide to Packaging for Developers Stanislav Ochotnicky
What Makes IcedTea Tick? Mark Wielaard
What in the World Is This ‚IcedTea-Web‘ Project? Deepak Bhole
The Free JavaWS Implementation in IcedTea-Web Omair Majid
Lessons Open Sourcing Java Taught Me Simon Phipps
The Rise and Fall and Rise of Java Steve O'Grady

Neděle 6. 2. 2011

Přednáška Přednášející
The Free Java Jigsaw Puzzle Tom Marble
The Modular Java Platform Mark Reinhold
Project Coin Joe Darcy
Observing HotSpot with SystemTap Mark Wielaard
JamVM Gets a New Flavour Robert Lougher
IndyDroid Rémi Forax
Azul's Foray into Open Source Cliff Click
Free Java Ben Evans Martijn Verburg
PHP.reboot Rémi Forax
Rhino and RingoJS Hannes Wallnöfer
AltosUI Bdale Garbee
Low latency in Gervill and JavaSound Karl Helgason
Garbage Collection Tom Marble

3. Současný stav OpenJDK 6

O současném stavu a taktéž o nejbližší budoucnosti OpenJDK 6 se mluvilo hned na několika přednáškách, ovšem pravděpodobně nejdůležitější a nejsledovanější byla slova, která pronesli Joe Darcy a Mark Reinhold – zaměstnanci firmy Oracle, kteří v této společnosti hrají poměrně důležitou úlohu v dalším směřování jazyka Java. Uživatele OpenJDK 6 a taktéž i JDK 6 bude jistě zajímat, že tato již více než čtyři roky stará verze Javy bude udržována minimálně do června roku 2012. To znamená, že alespoň do této doby budou pravidelně vydávány bezpečnostní aktualizace a když bude zapotřebí, tak i běžné aktualizace, které by se však neměly dotknout API všech standardních knihoven (API knihoven je ostatně jedna z věcí testovaných pomocí Java Compatibility Kit (JCK)). Perioda vydávání bezpečnostních aktualizací by se pravděpodobně měla sjednotit s ostatními produkty firmy Oracle takovým způsobem, aby tyto aktualizace byly vydávány pravidelně čtyřikrát do roka.

V případě, že by se ovšem z nějakých důvodů opozdilo vydání JDK 7 / OpenJDK 7 (viz též další kapitolu), může se podpora pro OpenJDK 6 prodloužit na blíže nespecifikovanou dobu, minimálně však na jeden rok od vydání oficiální verze JDK 7 / OpenJDK 7. Situace tedy bude velmi pravděpodobně vypadat tak, že šestá verze Javy bude bezplatně podporována zhruba do poloviny roku 2012 a od té doby budou vydávány bezpečnostní aktualizace pouze platícím zákazníkům. Joe Darcy na své přednášce také mluvil o tom, z jakého důvodu je OpenJDK 6 založeno na zdrojových kódech JDK 7 a nikoli na zdrojových kódech JDK 6. Jedná se o poměrně známý důvod – OpenJDK bylo vydáno v době, kdy byly zdrojové kódy JDK 6 již poměrně stabilní a autoři v nich nechtěli kvůli jejich „otevření“ dělat větší (nezbytné) změny. Proto byly jako základ pro OpenJDK 6 použity zdrojové kódy JDK 7, z nichž byly odstraněny části nekompatibilní se specifikací JDK 6 (rozšíření API knihoven apod.).

4. Budoucnost JDK 7 a OpenJDK 7

Z hlediska budoucnosti JDK7 a taktéž OpenJDK 7 byla velmi zajímavá přednáška Marka Reinholda, který pracuje ve společnosti Oracle na pozici Chief Architect of Java Platform Group, tj. jedná se o člověka, který má (jak už jsem se zmínil o několik odstavců výše) velký vliv na to, kdy bude JDK 7/OpenJDK 7 vydána a jaké nové vlastnosti v ní budou implementovány. Zatímco při psaní článků o nových vlastnostech JDK 7/OpenJDK 7 [první díl], [druhý díl], [třetí díl] ještě nebylo zcela jisté, kdy bude tato verze JDK skutečně vydána ani to, jaké vylepšení v ní budou implementovány, na FOSDEMu již byl Mark Reinhold konkrétnější.

Cyklus závěrečného testování by měl začít 8. 6. 2011 a oficiální verze JDK 7 i OpenJDK 7 by měla být vydána zhruba o měsíc a půl později, konkrétně 28. 7. 2011. Mark Reinhold taktéž velmi otevřeně zmínil čtyři priority vedení firmy Oracle, které se týkají programovacího jazyka Java. Tyto priority mj. vyplývají i z toho, že ve firmě Oracle pracuje několik tisíc programátorů a testerů na vývoji aplikací v Javě (nejedná se tedy o vlastní JDK ale o aplikace JDK využívající). Jedná se o následující priority:

  1. Java musí dále existovat jako jedna z nejdůležitějších vývojových platforem současnosti
  2. Nepřímé zisky z Javy a s ní souvisejících technologií
  3. Přímé zisky z Javy a s ní souvisejících technologií
  4. Snížení ceny (implementace, nasazení, údržby)

Další zajímavostí Markovy přednášky byla informace o složení OpenJDK Governing Board, okolo níž byla vedena živější diskuse, protože složení této komise je při pohledu na počty patchů a fixů přidávaných do OpenJDK 6 i OpenJDK 7 (roztříděných podle jednotlivých firem a sdružení) minimálně diskutabilní:

Chair: Adam Messinger, Oracle
Vice-Chair: Jason Gartner, IBM
OpenJDK Lead: Mark Reinhold, Oracle
At-Large (2x): Prof. Doug Lea, SUNY, Mike Milinkovich, Eclipse

5. Nové vlastnosti JDK 7 a OpenJDK 7

S novými vlastnostmi, které by se měly objevit v JDK 7 či OpenJDK 7, jsme se již na Rootu seznámili v trojici článků Novinky v JDK 7 aneb mírný pokrok v mezích zákona (1), Novinky v JDK 7 aneb mírný pokrok v mezích zákona (2) a Novinky v JDK 7 (3) + co v JDK 7 naopak nenajdeme. Joe Darcy ze společnosti Oracle ve své přednášce Project Coin víceméně potvrdil, že se všechny vlastnosti popsané ve zmíněné trojici článků v oficiálním vydání OpenJDK 7 skutečně objeví – jedná se především o nové možnosti zápisu celočíselných konstant s možným oddělením jednotlivých číslic pomocí podtržítka, podporu pro zápis čísel v dvojkové soustavě, podporu pro použití řetězcových konstant (literálů) v příkazu switch, operátor „diamantu“ zjednodušující především deklarace proměnných s použitím generik, automatické zavírání prostředků v příkazovém bloku try–catch–finally a taktéž o možnost použití jednoho bloku catch pro různé typy výjimek.

Kromě výše zmíněného projektu Coin bude OpenJDK 7 podporovat i novou instrukci bajtkódu invokedynamic, která je velmi důležitá a užitečná při implementaci skriptovacích jazyků běžících nad virtuálním strojem Javy. Bližší informace o této nové instrukci lze najít například na stránkách simple Java linkage: an invokedynamic apéritif, invokedynamic now lives in JDK7 a především na stránce JSR 292: Supporting Dynamically Typed Languages on the JavaTM Platform (k této nové funkcionalitě se ostatně ještě vrátíme v dalších článcích). Podle předpokladů bylo taktéž potvrzeno, že se s dalšími plánovanými vlastnostmi Javy setkáme až v některé z jejich dalších oficiálních verzí. Jedná se především o možnost deklarace kolekcí i s jejich inicializací („collection literals“) a taktéž o projekty Jigsaw a Lambda, s nimiž se pravděpodobně setkáme v OpenJDK 8, která by mohla být vydána již v roce 2012.

6. SystemTap – sledování procesů běžících v systému

Další zajímavou přednášku měl Mark Wielaard, který popisoval projekt SystemTap. Jedná se o nástroj, který umožňuje monitorovat běžící procesy. Na rozdíl od částečně podobných trasovacích nástrojů typu strace, ltrace či ftrace je však projekt SystemTap založen na takzvaných „sondách“ (probes), které mohou reagovat na různé události, které v běžícím procesu nastanou. V případě, že je taková událost sondou zachycena, může sonda spustit handler události napsaný v poměrně jednoduchém programovacím jazyce (tento jazyk nabízí například tvorbu podmínek, práci s proměnnými atd.). Díky takto koncipovanému způsobu práce SystemTapu lze získat mnoho přesně cílených informací o běžícím procesu bez toho, aby se musely zkoumat soubory generované výše zmíněnými nástroji typu strace apod. nebo aby se musel spouštět gdb (debugger).

Mark se na přednášce zmiňoval i o tom, proč byla podpora tohoto nástroje v případě OpenJDK problematická – hotspot je totiž psaný převážně v programovacím jazyku C++ a obsahuje velké množství maker a inline assembleru. Musely se tudíž provést takové úpravy, aby SystemTap vracel smysluplné informace (a aby bylo možné sondy přesně umístit). Tímto zajímavým nástrojem se ještě budeme zabývat v některé z dalších částí seriálu o programovacím jazyku Java, protože se jedná o nástroj velmi dobře použitelný pro sledování alokace a dealokace paměti, monitorování práce správce paměti atd. Další informace lze prozatím nalézt na stránkách projektu SystemTap či na stránce s demonstračními sondami: http://icedte­a.classpath.or­g/~vanaltj/sta­pexamples/.

7. Projekt PHP.reboot

Rémi Forax je mezi komunitou vývojářů používajících programovací jazyk Java poměrně známou osobností, zejména proto, že se podílel na rozšíření JRE takovým způsobem, aby JRE podporovala (dynamicky typované) skriptovací jazyky. Právě o novém skriptovacím jazyku byla i letošní druhá Rémyho přednáška, na níž posluchače stručně seznámil s programovacím jazykem nazvaným PHP.reboot. Jedná se o velmi rychlý dynamicky typovaný programovací jazyk, který je zvláštní tím, že umožňuje v jediném zdrojovém kódu kombinovat větší množství různých syntaxí – (X)HTML, XML, SQL, JSON atd. – to vše bez nutnosti používat zvláštní sekvenci znaků pro oddělení jednotlivých bloků. Tento jazyk není vázaný pouze na Oracle JDK nebo OpenJDK – naopak, může běžet například i na dalších JDK nebo i na Androidu.

Zajímavá je taktéž implementace tohoto programovacího jazyka. Programový kód je interpretovaný, ovšem interpret v době běhu programu získává mnoho informací o prováděném kódu (skriptu). Jakmile se detekují často volané metody nebo programové smyčky, interpret tyto části skriptu optimalizuje (rozbalí smyčky, zjednoduší práci se zásobníkem…) a následně tuto část skriptu přeloží do bajtkódu virtuálního stroje Javy. Další optimalizace jsou již plně ponechány na JRE. Prozatím se jedná o velmi „mladý“ projekt, ale práci Rémyho je velmi zajímavé sledovat a to i v případě, že PHP.reboot v poměrně silné konkurenci dynamicky typovaných jazyků běžících nad JRE nakonec neuspěje…

widgety

8. Obsah druhé části článku

Ve druhé části tohoto článku se zmíním o některých dalších přednáškách zabývajících se programovacím jazykem Java nebo jeho běhovým prostředím (JRE), které na konferenci FOSDEM proběhly. Především se jednalo o přednášky na téma vytváření balíčků s javovskými aplikacemi pro různé distribuce Linuxu. Tyto přednášky by mohly (možná bych si dovolil říci, že dokonce měly) zajímat všechny autory, kteří vytváří javovské aplikace s otevřeným zdrojovým kódem. Příště se taktéž zmíním o projektu Jigsaw, který částečně souvisí právě s vytvářením balíčků, i když původní poslání tohoto projektu je poněkud odlišné – je jím vytvoření modulární platformy Javy, která by obsahovala pouze ty součásti, které jsou nezbytné pro provozování dané aplikace.

Posledním tématem následující části tohoto článku bude popis projektu IcedTea-web, který v sobě implementuje dvě částečně související technologie. První z těchto technologií je podpora pro spouštění appletů z webových prohlížečů, samozřejmě i s nabídkou aplikačního programového rozhraní (API), pomocí kterého může applet komunikovat s JavaScriptovými programy na webové stránce. Druhou implementovanou technologií je Java Web Start umožňující spouštět javovské aplikace přímo z webového prohlížeče, ovšem s tím rozdílem, že tyto aplikace jsou spuštěny ve vlastním okně a současně i v takzvaném sandboxu, což je samozřejmě důležité z hlediska bezpečnosti (konfigurace sandboxu je však většinou odlišná od konfigurace použité pro spouštění appletů).

9. Odkazy na Internetu

  1. FOSDEM 2011
    http://www.fos­dem.org/2011/
  2. Free Java devroom
    http://www.fos­dem.org/2011/sche­dule/track/fre­e_java_devroom
  3. OpenJDK Governing Board
    http://openjdk­.java.net/grou­ps/gb/
  4. JCP
    http://jcp.or­g/en/home/index
  5. SystemTap
    http://source­ware.org/system­tap/
  6. Systemtap scripts using hotspot and hotspot_jni tapsets from IcedTea
    http://icedte­a.classpath.or­g/~vanaltj/sta­pexamples/
  7. Novinky v JDK 7 aneb mírný pokrok v mezích zákona (1)
    http://www.ro­ot.cz/clanky/no­vinky-v-nbsp-jdk-7-aneb-mirny-pokrok-v-nbsp-mezich-zakona-1/
  8. Novinky v JDK 7 aneb mírný pokrok v mezích zákona (2)
    http://www.ro­ot.cz/clanky/no­vinky-v-nbsp-jdk-7-aneb-mirny-pokrok-v-nbsp-mezich-zakona-2/
  9. Novinky v JDK 7 (3) + co v JDK 7 naopak nenajdeme
    http://www.ro­ot.cz/clanky/no­vinky-v-nbsp-jdk-7–3-co-v-nbsp-jdk-7-naopak-nenajdeme/
  10. IcedRobot: The GNUlization of Android
    http://fosdem­.org/2011/sche­dule/event/ice­drobot
  11. State of OpenJDK
    http://fosdem­.org/2011/sche­dule/event/open­jdk
  12. The Modular Java Platform
    http://fosdem­.org/2011/sche­dule/event/mo­dularjava
  13. Guide to Packaging for Developers
    http://fosdem­.org/2011/sche­dule/event/dev­packaging
  14. Project Coin
    http://fosdem­.org/2011/sche­dule/event/pro­jectcoin
  15. PHP.reboot
    http://code.go­ogle.com/p/phpre­boot/
Našli jste v článku chybu?
120na80.cz: Pálení žáhy: která jídla ne a co nás uzdraví?

Pálení žáhy: která jídla ne a co nás uzdraví?

Lupa.cz: Proč jsou firemní počítače pomalé?

Proč jsou firemní počítače pomalé?

Root.cz: Hořící telefon Samsung Note 7 zapálil auto

Hořící telefon Samsung Note 7 zapálil auto

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Vitalia.cz: Tradiční čínská medicína a rakovina

Tradiční čínská medicína a rakovina

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

Lupa.cz: Jak levné procesory změnily svět?

Jak levné procesory změnily svět?

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

Podnikatel.cz: Babišovi se nedá věřit, stěžovali si hospodští

Babišovi se nedá věřit, stěžovali si hospodští

DigiZone.cz: Funbox 4K v DVB-T2 má ostrý provoz

Funbox 4K v DVB-T2 má ostrý provoz

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

Vitalia.cz: 5 chyb, které děláme při skladování potravin

5 chyb, které děláme při skladování potravin

Podnikatel.cz: Instalatér, malíř a elektrikář. "Vymřou"?

Instalatér, malíř a elektrikář. "Vymřou"?

Vitalia.cz: Fyzioterapeutka: Chůze naboso? Rozhodně ano!

Fyzioterapeutka: Chůze naboso? Rozhodně ano!

Podnikatel.cz: Letáky? Lidi zuří, ale ony stále fungují

Letáky? Lidi zuří, ale ony stále fungují

Vitalia.cz: Pryč se zastaralým stravováním ve školách

Pryč se zastaralým stravováním ve školách

DigiZone.cz: Digi Slovakia zařazuje stanice SPI

Digi Slovakia zařazuje stanice SPI