Nepleťte si J# s Javou

Není tomu tak dávno, co byl Visual J++ společnosti Microsoft považován mnohými vývojáři za nejproduktivnější javov...


Není tomu tak dávno, co byl Visual J++ společnosti Microsoft považován mnohými
vývojáři za nejproduktivnější javové IDE (integrated development interface) na
trhu. Kvůli právním sporům se společností Sun se však jeho další evoluce
zastavila a zdálo se, že to bude znamenat i konec angažovanosti Microsoftu v
záležitostech, které se Javy týkají.
Překvapivým krokem Microsoftu proto nepochybně bylo nedávné uvedení dalšího
přírůstku do rodiny programovacích jazyků platformy .Net, jazyka J# ("J
sharp"), který po zklidnění bouřlivých diskusí kolem C# vzbudil další rozruch.
Ačkoliv J# vlastně není totéž, co Java společnosti Sun, jedná se o plnou
implementaci specifikace Javy, s jejíž pomocí lze provozovat javové aplikace po
jednoduché rekompilaci nebo binární konverzi. Na druhou stranu kód napsaný v J#
nepoběží v prostředí JVM (Java Virtual Machine), avšak podstatnějším omezením
je nemožnost využít vlastnosti run time prostředí Java SDK (software
development kit) firmy Sun ve verzi vyšší než 1.1.4. Microsoft tvrdí, že
rozdíly mezi Javou a J# budou pro právníky a soudce dostatečně zřetelné a že J#
se v očích javových vývojářů stane pro Javu seriózním konkurentem.
Uvedením J# sleduje Microsoft především dva cíle: Snaží se zachránit opomíjené
vývojáře v jazyce Visual J++ a dále zprostředkovat programátorům v Javě
jednoduchou cestu či možnost přechodu k platformě .Net. Vývojářům ve Visual J++
zajistí Microsoft "měkké přistání" tím, že J# bude nabízet veškeré vlastnosti
svého předchůdce z podstatné části je tento příslib realizován už v dnes
dostupné verzi Beta 1. Mnohem těžší však bude přesvědčit vývojáře v Javě o tom,
že mohou žít bez kompatibility s JDK 1.2, 1.3, nebo dokonce s J2EE (Java 2
Enterprise Edition), a bez nezávislosti na platformě. Přitažlivé prostředí
Visual J++ přilákalo nezanedbatelné množství programátorů, kteří začali psát
javové aplikace běžící pouze pod Windows. Může však J# způsobit podobný zázrak
i pro platformu .Net?
První betaverze jazyka J# je určena pro prostředí Visual Studio .Net Beta 2,
plná verze by přitom měla být k dispozici v polovině letošního roku. J# zatím
není podporován .Net Compact Frameworkem, což by se mělo v nejbližší
budoucnosti také změnit. Podobně jako u ostatních .Net jazyků i kód J# je
kompilován do MSIL (Microsoft intermediate language). Kompilátor J# negeneruje
soubory (třídy) v bajtkódu Javy, což jednoduše znamená, že není možné
provozovat J# aplikace mimo platformu .Net. Stejně tak nelze v J# projektech
používat soubory zkompilovaných javových tříd, protože run time prostředí .Net
javovému bajtkódu nerozumí. Jestliže nemáte k dispozici zdrojový kód javových
tříd, které používáte, měli byste tedy smůlu kdyby ovšem nebylo konvertoru
bajtkódu.
Tato chytrá utilita Microsoftu překládá bajtlód Javy do MSIL, čímž zajišťuje,
že i zkompilovaný kód Javy lze spouštět v .Net. Tento překlad (či převod) ovšem
nelze provádět za běhu aplikace konvertor musíte použít už v průběhu
programování pro každou javovou třídu, již hodláte použít. Taková třída je
převedena na soubor, který může být volán z prostředí J#, nebo kteréhokoliv
jiného jazyka platformy .Net. Proces převodu je přitom rychlý a bezproblémový.

Jednoduchá migrace
Naše zkušenosti ukázaly, že J# bez problémů přeložil veškerý javový kód (což
neplatí pro J2EE), který jsme spouštěli, bez jakýchkoliv modifikací tak dlouho,
dokud jsme se vyhnuli použití vlastností verze 1.2 a dalších JDK (Java
Development Kit). Microsoft dodává balík poskytující plnou funkcionalitu JDK
1.1.4 firmy Sun bez nutnosti použití jakéhokoliv kódu od Sunu, čímž se zřejmě
chce vyhnout konfrontaci a kontrole ze strany svého konkurenta. J# taktéž
implementuje všechna rozšíření Javy známá z Visual J++ včetně podpory
objektového modelu COM (Component Object Model) a nativního rozhraní J/Direct,
což samozřejmě výrazně přispívá k jednoduché migraci Visual J++ projektů na J#.
Otevřeli jsme několik takových zkušebních projektů ve Visual Studiu .Net (verze
Beta 2) a zkonvertovali jsme je jednoduchou rekompilací. Míra kompatibility s
Visual J++ je přitom vezmeme-li v úvahu, že je k dispozici teprve betaverze na
velmi dobré úrovni.
Podle vyjádření Microsoftu zůstanou knihovny run time prostředí i v budoucnu
zmrazeny na úrovni JDK 1.1.4 tj. zatím se neplánuje další pokračování v podobě
emulace novějších verzí JDK. Jestliže si J# případně získá větší popularitu, je
pravděpodobné, že si vzniklou díru v průběhu doby vyplní sami uživatelé/
programátoři. Sám Microsoft však považuje kompatibilitu s novějšími verzemi JDK
za irelevantní: V současnosti je podpora dostatečná pro zabezpečení možnosti
migrace Visual J++ projektů do .Net a vše, co chybí pro dosažení kompatibility
s knihovnami novějších JDK, je podle něj obsaženo ve frameworku .Net.
Naše dojmy při práci s "betou" jazyka J# tak byly převážně pozitivní vezmeme-li
v úvahu jednoznačně a úzce definované poslání i předem daná a vyřčená omezení.
Už teď se dá předpokládat, že finální verze umožní jednoduchou a bezproblémovou
transplantaci i rozsáhlých Visual J++ projektů do platformy .Net. Co se týká
vývoje přímo v .Net, J# může primárně zajímat zapřisáhlé javové programátory,
kteří realizují projekt pro tuto platformu, ale raději se přitom smíří s
omezeními J#, než by přešli na vyspělejší (ve srovnání s J#) jazyk C#. I přes
možnou zálibu v Javě je však vhodné si uvědomit, že jestliže budete vyvíjet pro
.Net, pak ve srovnání s Visual J# .Net bude právě C# mnohem lepším prostředkem.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.