Živý rozhovor: s Romanem Štroblem o NetBeans

Jak je rozšiřené NetBeans? Má NetBeans oproti Eclipse výrazně menší možnosti, co se týče psaní kódu? Je možné v NetBeans tvořit také PHP kódy s podporou debuggerování? Kolik lidí NetBeans vyvíjí? Nejen na tyto otázky odpovídal Roman Štrobl, který pracuje ve firmě Sun Microsystems jako technický evangelista na open source projektu NetBeans.
Kapitoly článku

Proč myslíte, že všichni velcí producenti jako BEA, Borland apod. staví své vývojářské nástroje nad platformou Eclipse namísto NetBeans? (Petr)

Roman Štrobl: Důvodů je několik. Za prvé to jsou důvody politické, Borland i BEA jsou konkurence Sunu. IBM udělala dobrý krok, že vytvořila Eclipse Foundation. Firmy typu BEA či Borland pak spíš budou stavět nad těmito technologiemi, protože Eclipse Foundation je nezávislá (i když je tam jistě velký vliv IBM – stále dost kódu Eclipse je v rukou IBM). Po technické stránce jsou myslím obě platformy na podobné úrovni, ale na tom ve světě velkého businessu zas tolik nezáleží. V současné době je také vývojářská komunita kolem Eclipse větší než komunita kolem NetBeans, což mohlo přispět k rozhodnutí. NetBeans nebylo před několika lety příliš známé a používané, takže není divu, že velké firmy zvolily Eclipse. Počet vývojářů používajících NetBeans však neustále roste, a tak se situace může změnit během několika let. Myslím, že v současnosti je vývoj Eclipse pomalejší než u NetBeans. Což mimo jiné potvrzuje i to, že jsme tento rok vyhráli dost ocenění, zejména za inovaci. K Eclipse v současnosti přispívá mnoho firem, ale ne všechny jsou s ekosystémem spokojené. Takže uvidíme, jak se bude situace vyvíjet v budoucnosti.

Jak to vypadá s podporou facelets v NetBeans? Zatím jsem se díval, že existuje jakási meziverze, která ani není součástí Visual Web Pack. Navíc je dosti zabugovaná. S verzí Javy 7 se počítá, že by JPA bylo součástí i SE. Bude vylepšena podpora pro Swing i v NetBeans? (finc)

Roman Štrobl: Podpora facelets je prozatím vyvíjená jako extra projekt na java.net. Do verze 6.0 neplánujeme tuto funkčnost přidávat do Visual Web Pack (jsou jiné priority, Visual Web Pack má dost problémů, které do 6.0 řešíme). Můžeme to zvážit do další verze. Pokud máte s plug-inem pro facelets problémy, zašlete své komentáře na petr.pisl@sun.com, Petr vám také může říct více o plánech do budoucnosti a o integraci s VWP.

Co se týká Swingu a JPA, ve verzi 6.0 bude podpora pro Beans Binding, které používá JPA pro databinding pro swingové aplikace. Bude i podpora pro Swing application framework (také bude součástí JDK 7). Tuto podporu tedy budeme mít dříve než bude JDK 7 – bude ji možné používat nad JDK 6. Vytvořil jsem flash demo, které tuto podporu ukazuje. Tyto features budou dostupné v Milestone 9, jsou již dnes v denních buildech NetBeans 6.

Refactoring samotné Entity je sice skvělý, ale už se neuplatňuje na NativeQuery v anotacích. Předpokládá se nějaká vylepšená podpora pro refactoring jak pro SQL query na JPA, tak na anotace? (finc)

Roman Štrobl: O plánech umožnit refaktorovat SQL na JPA zatím nevím. Určitě je to dobrá myšlenka, ale zřejmě dost náročná na provedení. Myslím, že do verze 6 to nepůjde, protože refaktoringy jsou přepisovány na novou infrastrukturu editoru a máme tedy dost práce „uchodit“ základní refaktoring. Dobrý návrh do další verze, nechcete to zadat do IssueZilly jako Request for Enhancement?

Je v NetBeans plánovaná lepší podpora pro GWT než template projektu, který se dá „vyhrabat“ na internetu teď? (Tomáš U.)

Roman Štrobl: Který template projekt máte na mysli? Pokud je to ten, co jsem kdysi publikoval na svém blogu, tak novou verzi naleznete na http://gwt4nb.dev.java.net. Pokud budete mít k plug-inu feedback, jsou tam kontakty na autory, tak jim můžete napsat.

Mám otázku k editoru. Pokud píši např. String text = new a vyvolám autocomplete (ctrl+space), tak mi rozbalí všechny dostupné objekty. Ze samotného kontextu je však dostatečně zřejmé, že potřebuji new String(). Jiné IDE (Eclipse, Idea, jBuilder) mi primárně String nabídnou. Proč toto v editoru tedy implementované není, případně či se o tom uvažuje do NetBeans 6? (rs)

Roman Štrobl: Ano, tato funkčnost bude dostupná v NetBeans 6. Zkuste Milestone 8, většinou to funguje (někdy to ještě má problémy, když není třída naimportovaná). Třeba i v try-catch blocích funguje, že vám code completion nabídne tu správnou exception, a i v dalších kontextech.

Pokud vyvolám new java class, tak mi wizard nabídne vytvoření třídy, zařazení do package a location. Proč mi nedovolí zvolit (pokud je potřebné) i parrent class pro extend, případně ještě interface pro implements? Je problém toto začlenit do formuláře generování tříd? (rs)

Roman Štrobl: Problém to určitě není, ale my se snažíme zachovávat dialogy jednoduché (dalo by se tam přidat i více jiných featur při generování třídy). Pokud vám tato funkčnost opravdu chybí, zadejte nám issue.

Jak je na tom podle vás platforma NetBeans s dokumentací? Myslím, že je to slabé místo každého aspoň trochu otevřeného projektu. Mám teď poměrně čerstvou zkušenost s vývojem pluginů pro platformu Elipse, a ačkoliv se říká, že je zde dokumentace dostatek, velkou část času trávím hledáním informací po konferencích a bádáním typu pokus omyl. (Pavel Cvrček)

Roman Štrobl: NetBeans platforma na tom nebyla dříve s dokumentací příliš dobře. Jak už jsem zmiňoval, existuje úplně nová knížka Rich Client Programming: Plugging into the NetBeans Platform. Dále máme asi 60 tutoriálů na platform.netbeans.org. V neposlední řadě je zde blog Geertjana Wielengy, který o platformě bloguje téměř každý den už skoro dva roky. Dále NetBeans API javadoc a use cases pro APIs.

Myslím, že jsme na tom s dokumentací podobně jako Eclipse RCP, možná i trochu lépe, dělali jsme nedávno srovnání a máme více tutoriálů. Také jsem slyšel dobré věci o knize o NetBeans platformě od člověka, který používal Eclipse RCP. Samozřejmě dokumentace na platformu není nikdy dost a máme dva dedikované lidi, kteří nedělají nic jiného, než píší dokumentaci k platformě. Pokud vám nějaká dokumentace chybí, napište na Geertjan.Wielenga@sun.com (anglicky), ať si to přidají dokumentátoři do to-do listu.

V NetBeans 6 (M9) odesílám události UI, když „zrudne“ UI Gestures Collector. V současné chvíli webová stránka pro sběr hlásí 13 000 přijatých logů, což je hodně. Jakým způsobem se tato data zpracovávají a jaký mají přínos pro vývoj IDE? Zdá se mi, že značný, protože subjektivní rozdíl mezi 5.5 a 6.0 z hlediska uživatelského komfortu je propastný. (Žerem)

Roman Štrobl: To by mě také celkem zajímalo, jak kolegové tolik dat zpracují. :)

UI Gestures collector hlásí chyby a eventy v IDE. Co se týká chyb, tak tam zanalyzujeme stack traces a často opakující se exceptions vyřešíme – ve finální verzi IDE se nesmí exceptions objevit. To má velký přínos, co se týká rychlosti nalezení chyb. U eventů chceme vyhodnotit, které události se dějí často či zda nedochází k nějakým problémům. Na základě těchto dat chceme vylepšit usabilitu IDE. Často opakované akce musí být jednoduché a rychlé. Pokud uživatelé nepoužívají některé části IDE, tak máme zřejmě problém s „discoverability“ featur a je potřeba je více zviditelnit. Takže ano, přínos pro vývoj IDE tato data mají, i když nebude jednoduché je zpracovat.

Hodlá Sun podporovat 3D grafiku v Javě? JOGL nebo java3d? (ufak)

Roman Štrobl: V JDK 6 je OpenGL pipeline, takže Swing používá akcelerovanou grafiku, pokud je to možné. Java3D je vyvíjeno z části zaměstnanci Sunu, takže Java3D Sun podporuje. JOGL je projekt pro open source bindingy pro OpenGL a ty nad Javou pěkně fungují. Nejsem si jistý, jakou podporu by zde Sun měl poskytovat – do JDK se myslím bindings pro OpenGL neplánují přidávat, je lepší, když jsou vyvíjené jako separátní projekt.

Líbilo se mi UML v NetBeans. Zatím se mi ale nepovedlo stáhnout plugin samostatně pro počítač, který není na síti. Bude? (ufak)

Roman Štrobl: Ano, v NetBeans 6 bude UML volitelnou součástí IDE (viz nový instalátor). Jinak v NetBeans 5.5 při instalaci plug-inů z Update center je možné tyto plug-iny uložit během jednoho kroku na disk – je tam uložení (pokud si dobře vzpomínám) na right-click místo instalace.

Je možné někde vidět seznam všech novinek pro NetBeans 6? Kdy bude final release NetBeans 6? Jaký vznikne problém, pokud část týmu bude pracovat s Eclipse a část s NetBeans 6? (Petras)

Roman Štrobl: Ano, novinky v NetBeans 6 najdete na této wiki stránce. Final release 6.0 je naplánován na listopad 2007 (držte nám palce). V teamu se dají obě IDE používat, je třeba vyřešit sdílení projektů (například pomocí Ant či Maven). Eclipse projekt lze do NetBeans importovat pomocí tohoto nástroje. Obráceně to nejde (pokud to chcete, napište lidem z Eclipse, ať vytvoří plug-in). Doporučuji při používání obou IDE rozhodně dávat kód do CVS, to je dobrý způsob sdílení kódu. Také je třeba používat stejné formátování kódu v obou IDE, aby nedocházelo k diffům. Pokud používáte GUI builder v NetBeans, needitujte kód ručně v Eclipse. Také některé vizuální nástroje v Eclipse chybí, takže dávejte pozor například při používání Mobility pack.

Používat obě IDE se dá, je to mírně náročnější na setup, ale výhoda je, že můžete používat to nejlepší z obou IDE. Případně vývojáři mohou používat IDE, ve kterém jsou produktivnější. Znám dost teamů, které používají dvě IDE, například Eclipse pro editování a NetBeans pro profilování kódu, pro GUI design či návrh mobilních aplikací.

JSR 294 versus OSGi. Proč SUN (komunita) prostě nepřevzal standart existující hromadu let? Nikdo se ani nepokusil čerpat ze zkušenosti jiných – JSR 294 tak opakuje některé chyby OSGi 1.0. A co je nejhorší, žádná velká společnost tuto skutečnost ani nepřipomněla a všichni prostě automaticky zvedli ruku. Dost to narušuje moji důvěru ve schvalovací proces. (jk)

Roman Štrobl: Zeptejte se spec leadu z JSR 294. Já osobně si myslím, že se jedná především o politické důvody. Problém také je, že se OSGi vyvíjí jako standard mimo JCP, tím pádem nad ním nemůže mít JCP kontrolu a větší změny v OSGi by mohly ovlivnit budoucnost Javy jako takové. Víc vám asi k této bitvě neřeknu.

Co se týká NetBeans a OSGi, tak jsme jej neimplementovali, protože máme modulový systém, který existoval mnohem dříve, než se začalo OSGi používat pro modularizaci Java aplikací. Migrace na OSGi pro nás znamená ohromné množství práce a nejsme si jistí, jaké by to z pohledu platformy přineslo výhody.

Proč se v Linuxu v Berylu po spuštění NetBeans zobrazí jen rám okna a žlutošedé pozadí? Jedná se o problém se Swingem a jeho automatickým rozmísťovačem? Budete na tento problém nějak reagovat? Děkuji, spokojený uživatel NB 5.5. (Mafo.cz)

Roman Štrobl: Bohužel neznám Beryl, ale hádám, že se spíš jedná o problém Swingu. Zkoušel jste nějaké jiné swingové aplikace? Rád bych vás požádal, abyste tuto chybu zadal do naší databáze chyb. Pokud se nejedná o chybu NetBeans, ale Swingu, naši vývojáři ji zadají proti JDK. Já bych také mohl zadat tuto chybu osobně, ale jelikož ji neumím navodit, nedokázal bych ověřit, zda se ji povedlo vyřešit.

Aktualizace: Jeden ze čtenářů Živě.cz nalezl chybu zadanou proti JDK. Takže je to problém Swingu. Prý existuje workaround v podobě nastavení AWT_TOOLKIT=„MToolkit“.

Kolik lidí NetBeans vyvíjí? (Dan)

Roman Štrobl: Tuto otázku jsem se již pokusil zodpovědět výše. Je to v řádu stovek, pokud počítáme celé NetBeans + packs a lidi kolem vývoje (QA, docs apod.) a kontribuce z komunity. Sun v Praze zaměstnává na NetBeans necelou stovku lidí.

Co považujete za největší přínos NetBeans vůči Eclipse? A jak je to s podporou Hard Realtime Java kódů v NetBeans? (Peter Fodrek)

Roman Štrobl: Vývojářům se na NetBeans velmi líbí, že na běžný vývoj fungují bez nutnosti stahovat další plug-iny, jako je tomu u Eclipse (kde plug-iny nemusí vždy dobře spolupracovat). Získáte integrované prostředí pro Java SE, ME a EE a rich client platformu. Vše je zadarmo, na rozdíl od Eclipse, kde některé plug-iny musíte kupovat či platíte za integraci plug-inů v podobě koupě IDE, jako je MyEclipse nebo JBuilder. NetBeans podporuje nejnovější standardy a funguje na všech platformách, kde nainstalujete JDK. Eclipse někdy pokulhává v podpoře standardů, např. podpora Java SE 5 přišla dost pozdě, stejně tak Java EE 5.

Co se týká featur, je zde funkčnost, která je myslím o dost lepší než v Eclipse:

1. GUI builder „Matisse“ pro Swing, který je jednoduchý na používání a vytváří GUI. Ty dobře vypadají na všech platformách, jsou jednoduše lokalizovatelné a při změně velikosti se nerozsypou.

2. Dobře integrovaný profiler, který umí profilovat jen vybrané části kódu, takže zbytek aplikace běží v plné rychlosti.

3. Mobility pack: unikátní řešení pro Java ME. Projekt MTJ z Eclipse s ním lze jen těžko porovnávat.

4. Platforma postavená nad Swingem: pokud máte existující swingové aplikace, můžete ji jednodušeji využít než v případě Eclipse RCP.

5. Podpora Ruby: i když v současné době je dostupná jako preview, mnoho vývojářů nám sdělilo, že předčí podporu Ruby v Eclipse.

6. Plná podpora Java EE 5 standardu: NetBeans ho podporují již půl roku a vlastnosti jsou jednodušší na používání než v případě Eclipse WTP.

7. Projektový systém založený na Antu: projekty v NetBeans jsou ant skripty, a tudíž je jednodušší migrovat do jiného IDE.

8. Nástroje pro vývoj SOA aplikací, které jsou zadarmo.

9. Developer collaboration, možnost komunikovat přes instant messaging v IDE a sdílet kód.

10. Vizuální nástroje pro vývoj web aplikací. Ty v Eclipse zatím nejsou, i když uznávám, že zatím to ještě v NetBeans také není úplně perfektní, ale jsme v této oblasti vepředu.

Abych byl fér, existují některé oblasti, kde NetBeans jsou ve verzi 5.5 pozadu (zejména editování kódu), ale ve verzi 6.0 myslím doženeme Eclipse i v oblastech, kde historicky byly NetBeans horší. Také mají v současné době NetBeans menší komunitu, ale ta stále roste, takže vzniká spousta nových plug-inů. Doporučuji zkusit obě IDE a vybrat to lepší pro vaše projekty – obě IDE jsou dobré, ale řekl bych, že se NetBeans v poslední době vyvíjí dopředu rychleji než Eclipse.

Pro Real Time Java neexistuje speciální podpora. Myslím, že v současné době není pro žádné IDE.

Neuvažujete náhodou o tom, že v NetBeans zavedete perspektivity? Po pravdě musím říct, že když jsem byl „násilně“ donucen k přechodu na Eclipse, tak po delší zkušenosti musím přiznat, že tento koncept je geniální. (Milan)

Roman Štrobl: Perspectives ala Eclipse zatím v plánu nejsou. Je to ale celkem častý požadavek uživatelů Elipse, proto nevylučuji, že se v dalších verzích objeví. Ne každý má tuto vlastnost rád, takže, bude-li se zavádět, vznikne určitě mnoho diskuzí.

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,