Test rozdílů v kompatibilitě zdrojových kódů a binárních Java knihoven - Výsledky

2014-02-10 Tema obsahu Kamil Jezek

Vážení příznivci jazyka Java,

Před časem jsem zasílal dva zajímavé testy na ověření, zda Java vývojáři 
znají rozdíl mezi kompatibilitou Java API tak jak jí vyhodnocuje Java 
překladač vs. JVM. Testy jsou již nyní uzavřené a výsledky zpracované. 
Ve zkratce byl potvrzen předpoklad, že Java vývojáři jsou dobře 
obeznámeni s kompatibilitou na úrovni zdrojových kódů (co lze přeložit), 
ale již méně znají kompatibilitu na úrovni JVM (co způsobí LinkageError).


Tento týden ve středu 12.2 proběhne na Západočeké univerzitě v Plzni 
přednáška na toto téma, kterou přednese sám hlavní autor studie. Zájemci 
jste srdečně zváni.  Prednaska se kona od 15h v mistnosti UV115 
(vestibul Fakulty Aplikovaných Věd), Univerzitní 22 Plzeň (dálniční 
sjezd Bory).


Dále uvádím abstrakt a bio údaje přednášejícího, kterým je Jens Dietrich:

Title: Broken Promises: Problems in Java Programs Caused by Incompatible 
Library Upgrades


Abstract:

It has become common practice to build programs by using libraries. 
While the benefits of reuse are well known, an often overlooked risk are 
system runtime failures due to API changes in libraries that evolve 
independently. Traditionally, the consistency between a program and the 
libraries it uses is checked at build time when the entire system is 
compiled and tested. However, the trend towards partially upgrading 
systems by redeploying only evolved library versions can result in 
situations where these crucial verification steps are skipped. For Java 
programs, partial upgrades create additional interesting problems as the 
compiler and the virtual machine use different rule sets to enforce 
contracts between the providers and the consumers of APIs.


We have studied the extent of the problem on the qualitas corpus, a data 
set consisting of Java open-source programs widely used in empirical 
studies. We found that the above mentioned issues do occur in practice, 
albeit not on a wide scale. We then developed a set of Java library 
evolution puzzlers - inspired by Joshua Bloch’s famous book - to find 
out whether developers are aware of the sometimes subtle differences 
between source, binary and behavioural compatibility.  Over 425 
developers responded.  I will present some of the (surprising) survey 
results. I will also challenge the audience to solve some of the puzzlers.



Bio:

Jens Dietrich is Associate Professor at the Engineering School of Massey 
University in New Zealand. In former lives he studied Math at the 
University of Leipzig (which started as a offshoot of the University of 
Prague in 1409) and completed a PhD in Computer Science in 1996. He then 
worked for the Bauer  Partner Consulting group between 1996 and 1999, 
designing and implementing large-scale Smalltalk applications for the 
banking and automotive industry. Between 1999 and 2003 he worked as a 
development aid consultant in IT technology in Namibia for a German 
government organisation, before returning to Academia in 2003 by joining 
Massey.



 Original Message 
Subject: 	Test rozdílů v kompatibilitě zdrojových kódů a binárních Java 
knihoven

Date:   Tue, 03 Dec 2013 15:09:46 +0100
From:   Kamil Jezek kje...@kiv.zcu.cz
To: konference@java.cz



Dobrý den

s kolegy se zabývám rozdíly mezi binární kompatibilitiou a 
kompatibilitou zdrojových kódů v Javě.  Tedy mezi tím co je 
zkompilovatelné, ale způsobí chybu za běhu a naopak. Předpokládáme, že 
tyto rozdíly nejsou mezi programátory příliš známé, což je problém při 
tvorbě zpětně kompatibilních aktualizacích knihoven.


Vytvořili jsme  dva testy, v případě nedostatku času se dá vyplnit 
kratší verze testu, pro získání co nejvíce informací je lepší vyplnit 
delší verzi


kratší verze
https://www.surveymonkey.com/s/LibEvolutionPuzzlersSE

delší verze
https://www.surveymonkey.com/s/LibEvolutionPuzzlers


Test je koncipován tak, že je vždy předložen kód klientského programu, 
aktuální knihovna a nová verze knihovny.  Testovaná osoba odpovídá zda 
je aktualizace možná bez překompilování, je nutná rekompilace a případně 
zda se změni chování programu.


Všem kdo se o rozdílnost interpretace Java compileru a virtual machine 
zajímají, kdo si chtějí oveřit znalosti, nebo se naučit něco nového, 
doporučuji test vyplnit.



Kamil


--
Ing. Kamil Jezek, Ph.D.

Researcher, NTIS - New Technologies for Information Society
Department of Computer Science and Engineering
University of West Bohemia in Pilsen, CZ


http://www.linkedin.com/in/kamiljezek




Test rozdílů v kompatibilitě zdrojových kódů a binárních Java knihoven

2013-12-03 Tema obsahu Kamil Jezek

Dobrý den

s kolegy se zabývám rozdíly mezi binární kompatibilitiou a 
kompatibilitou zdrojových kódů v Javě.  Tedy mezi tím co je 
zkompilovatelné, ale způsobí chybu za běhu a naopak. Předpokládáme, že 
tyto rozdíly nejsou mezi programátory příliš známé, což je problém při 
tvorbě zpětně kompatibilních aktualizacích knihoven.


Vytvořili jsme  dva testy, v případě nedostatku času se dá vyplnit 
kratší verze testu, pro získání co nejvíce informací je lepší vyplnit 
delší verzi


kratší verze
https://www.surveymonkey.com/s/LibEvolutionPuzzlersSE

delší verze
https://www.surveymonkey.com/s/LibEvolutionPuzzlers


Test je koncipován tak, že je vždy předložen kód klientského programu, 
aktuální knihovna a nová verze knihovny.  Testovaná osoba odpovídá zda 
je aktualizace možná bez překompilování, je nutná rekompilace a případně 
zda se změni chování programu.


Všem kdo se o rozdílnost interpretace Java compileru a virtual machine 
zajímají, kdo si chtějí oveřit znalosti, nebo se naučit něco nového, 
doporučuji test vyplnit.



Kamil


--
Ing. Kamil Jezek, Ph.D.

Researcher, NTIS - New Technologies for Information Society
Department of Computer Science and Engineering
University of West Bohemia in Pilsen, CZ


http://www.linkedin.com/in/kamiljezek