JDeveloper 11g vs. Visual Studio 2008 – Alapok
A napokban kezdtem el a féléves önálló-labor feladatom előkészítését a következő félévre, melyet Java-ban kell implementálnom. Témacsoportomból adódóan a fejlesztőkörnyezet magát kínálta, így esett a választás az Oracle JDeveloper 11g -re. Másfél éve fejlesztek kisebb-nagyobb alkalmazásokat, komponenseket C# -ban és már évek óta használom a Visual Studio -t egyéb nyelvekhez is, így mondanom sem kell, hogy nagyon szívemhez nőtt a Microsot IDE -je, különösen a legutolsó változat, a Visual Studio 2008. Korábban Java kódot csak NetBeans -ben fejlesztettem, a JDeveloper korábbi verzióját a 10-est csak egy két labor alkalmával volt lehetőségem használni, így nem volt túl sok tapasztalatom a termékkel kapcsolatban. Ezért döntöttem úgy, hogy először összegyűjtöm azokat az alapfunkciókat, amelyeket megszokhattunk egyikben-másikban és ezek szempontjából összehasonlítom őket.
Szoftverek Elérhetősége
Először is a legnagyobb különbség a két IDE (Integrated Development Environment) között, hogy míg az Oracle mindkét JDeveloper csomagja teljesen ingyenesen elérhető, a Microsoft a 3 különböző csomagja közül csupán a Visual Studio Express kiadásait (C#, C++, Visual Basic, Web Developer) tette ingyenessé, a Professional és a Team System kiadást külön termékként kell megvásárolni. A helyzet persze nem ennyire rossz, hiszen haszánkban az állam és a Microsoft közötti Campus és School megállapodás keretében a Professional változat is ingyenesen elérhető a tanárok és diákok részére, természetesen csak oktatási célokra felhasználva. Ebből kifolyólag ebben az elemzésben csak az Visual Studio 2008 Express Editions -t, fogom az Oracle JDeveloper 11g u2 -vel összehasonlítani.
Környezetek letöltése:
Platform és nyelvi összehasonlítás
| Szempont | Oracle JDeveloper 11g | Microsoft Visual Studio 2008 Express Editions |
| Környezet |
Windows, Linux, |
Windows |
| Nyelvek | Java | C#, C++, VB és még további 40 CLI képes nyelv |
| Fordított kód | Java Bytecode | Common Intermediate Language |
| Platformfüggetlen | Igen | Igen |
| Virtuális gép | JVM | CLR VM (.NET, MONO) |
Ahogy a táblázatból is láthatjuk mindkét fejlesztő környezet platformfüggetlen kódok fejlesztését szolgálja, azonban maga az IDE Microsoft VS 2008 EE esetében csak Windows-on futtatható, míg a JDev gyakorlatilag bármilyen fejlesztésre használható OS-en. A nyelvek szempontjából a JDev ugyan csak Java és ahhoz közeli technológiák, metanyelvek fejlesztését támogatja, a VS Studio ennél jóval többet, de a két két környezet ilyen szempontból nem is fedi egymást, hiszen a 2001-es megállapodásuk óta a Microsoft nem botorkál a Java háza táján, így saját Java Virtuális gépét, a Microsoft Java Virtual Machine -t és fejlesztői környezetét is, a Visual J++ is a múltnak adta. Innentől mondhatjuk olyan szép egységesnek és valóban platformfüggetlennek a Java-t, mint amilyen most.
Ugyanakkor a Microsoft -ot sem kell sajnálni, hiszen ekkor már készen volt a CLI, azaz a Common Language Interface terve, ami a platformfüggetlenség mellett a nyelvi függetlenséget hivatott megteremteni, ami később az Intel, a HP és a Novell támogatásával hivatalos szabvánnyá is vált. A fejlesztő környezet ekkor a forráskódot egy a Java bájtkódhoz hasonló köztes kódba, a CLI -be fordítja, melynek platformfüggő részeit a virtuális gép fog futásidőben fordítani. Az egyik legnépszerűbb framework, a Microsoft .NET -et kivéve, a Novell által szponzorált MONO lett, ami valódi cross-platform futtatást biztosít az emulációk helyett a .NET -ben írt kódok végrehajtására Linux-on, Mac-en és természetesen Windows-on is.
Felület és kódolás
| Szempont | Oracle JDeveloper 11g | Microsoft Visual Studio 2008 Express Editions |
| Indítás sebessége | ~15 mp | ~2 mp |
| IDE Felület, menük | Közel azonos, kulturált, varázslókkal tűzdelt, gyors kódolástámogatás, színezés, kód-/design-/osztálydiagram nézet, XML szerkesztő és egyéb specifikus objektumok szerkesztői, adatforráskezelés, színezések stb… | |
| Legfelső munkaterület elnevezése | Application | Solution |
| Munkaterület | Project | Project |
| Forrás és adatforrás elkülönítés | Igen (Application Navigator) | Nem (Project Explorer) |
| Gépelés közbeni kiegészítés | Nem, csak kikényszerítve | Igen (IntelliSense) |
| Gyakori metódusok kiegészítés | Nem | Igen (IntelliSense) |
| Kódkiegészítés | Igen CTRL+SPACE | Igen CTRL+SPACE |
| Kódrészlet beszúrás | Igen CTRL+ENTER | Igen (TAB+TAB) |
| Kódváltozás követés | History fül | Forráskód margóján jelölve |
| Kódváltozás visszavonás | Tetszőlegesen | Csak sorrendben |
| Kódolás közbeni hibakeresés | Szövegben és margón | Csak szövegben |
Az első szembetűnő különbség viszont az, hogy a JDev indításkor elég lassan teljesít, 15 mp alatt sosem indult el a gépemen, míg a VS 2008 alig 2 mp alatt már használható, de ez nyilván a Java megszokott indítási lassúságának tudható be.
A két környezet felülete többnyire megegyezik, nagyjából ugyanazokat a bevált funkciókat kaphatjuk mindkét rendszerben. Egy másik különbség a source és resource elkülönítése a két IDE között, hogy míg az Oracle külön konténerben mutatja ezeket az egész Application-re vontakoztatva, a Microsoft ezeket a Projektekhez kötve mutatja meg azok projekt fájában.
A forrsákód szerkesztőben további eltérések érzhethetők, amik lassíthatják a kódolást, ha valaki az egyik stílushoz már hozzászokott. Személy szerint nagyon hiányoltam a JDev-ből a VS-ben IntelliSense-nek keresztelt jószágot, ami intelligensen alkalmazkodva kódomhoz már gépelés közben felajánlja a lehetséges kódrészleteket és az ahhoz tartozó típusleírásokat, paraméterezéseket, így gyakorlatilag pár karakter és a szóköz nyomkodásával elkészülhet az értelmes kódunk. A JDeveloperből a felajánlásokat csak a CTRL+SPACE -szel lehet kikényszeríteni, és sajnos azok sem nyújtanak típusleírást vagy paraméterezési segítséget. A JDeveloperben a kódrészlet, vagy kódsablonok beszúrását a CTRL+Enter kombinációval érhetjük el, míg VS-ben ezt is automatikusan az IntelliSense nyújtja a TAB+TAB segítségével, ami szintén kényelmesebb, mint a billentyűkombinációis megoldás.
A kódolás közbeni hibakeresés mindkét környezetben megtalálható, a JDeveloperben azonban talán egy kicsit hangsúlyosabb a forráskód margóján való figyelmeztetéssel, de ez persze csak ízlés kérdése.
A kód változáskövetés, azaz a mentett és szerkeszett források közötti különbségeket a VS-ban rögtön a forráskód margóján jelennek meg, azonban ezek visszavonása csak fordított sorrendben történhet, míg a JDev -ben ez a funkció ugyan külön fülre, a History-ra került, de itt az összehasonlító nézet mellett az egyes változásokat akár külön-külön is visszavonhatjuk, tetszőleges sorrendben, ami remek funkciónak bizonyul a fejlesztések során.
Összefoglalásul tehát annyit mondhatunk, hogy mindkét fejlesztői környezet profi módon látja el feladatát, de egyik sem váltható ki a másikkal, hiszen nyelvi átfedés nincs közöttük, mindkét IDE egy vagy több platformfüggetlen nyelvre és környezetre összpontosít, de az általuk kínált kiegészítő szolgáltatások erősen gyártó specifikusak. Mind az Oracle, mind pedig a Microsoft a saját termékpalettájához szeretne minél professzionálisabb fejlesztői eszköztárat nyújtani, ezért a két termék békében elfér egymás mellett, nekünk csak résen kell lenni, hogy melyik forrás-szerkesztőben nyomjuk azt a spéci TAB-TAB párost.


Szia,
érdekes összehasonlítást olvashattunk, bár az elején furcsállottam, hogy miként lehet két különböző nyelvre specializált feljesztőeszközt bemutatni.
Nekem olyan tapasztalatom volt a JDeveloperrel(10 és 11 is), hogy indítás után rövid időn belül nagyon belassult. Értem ezalatt, hogy a navigálás is több másodperces reakcióidővel történt meg. Mondjuk a Visual Studio (2005) sem egyszerű eset, mert előfordult, hogy több példányt kellett egyszerre használnom, ekkor viszont szép komótossá vált a környezetváltás, rengeteg memóriát megettek. Összességében én azt a tapasztalatot gyűjtöttem be, hogy ha kényelmi funkciókat akarsz használni a fejlesztéshez, akkor áldozatot kell hozni a teljesítmény oltárán.
Csak így tovább!
Péter