reklama

Ž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

Klepněte pro větší obrázek Na vaše otázky k NetBeans odpovídal Roman Štrobl, který pracuje ve firmě Sun Microsystems jako technický evangelista na open source projektu NetBeans. Roman Štrobl má přes osm let zkušeností s vývojem softwaru v Javě a za pomoci různých skriptovacích jazyků. Během své kariéry pracoval na vývojových nástrojích, aplikacích pro Cisco IP telefonii a na projektech z oblasti počítačové bezpečnosti. Zajímá se o novinky ze světa technologií a vývojových nástrojů a jako součást své práce pomáhá vývojářům efektivně používat nové nástroje a technologie.

V tomto článku najdete otázky a odpovědi týkající se tématu rozhovoru. Některé dotazy a odpovědi jsme kvůli přehlednosti zkrátili, jiné rozdělili do více částí. Některé otázky se opakovaly a v takových případech byly zpravidla zodpovězeny jen jednou. Originální verzi rozhovoru najdete na této stránce.

Odpovědi na otázky čtenářů Živě.cz

Kamarád tvrdí, že NetBeans oproti Eclipse má výrazně menší možnosti, co se týče psaní kódu, možností refaktorizace apod. Zajímalo by mě, zda se v tomto ohledu v další verzi dočkáme vylepšení. (JP)

Roman Štrobl: Souhlasím, že NetBeans ve verzi 5.5 má méně možností, co se týká psaní kódu. Vylepšení editoru je jeden z hlavních cílů do verze 6.0. Již dnes si můžete stáhnout Milestones (milníky), které nabízejí různou novou funkčnost v editoru (Milestone 8 je dostupný ke stažení zde). Popis nové funkčnosti editoru naleznete na této stránce. Ostatní vylepšení verze 6.0 jsou na této wiki stránce. Co se týká refaktoringů, tak ty kolegové přepisují na novou infrastrukturu editoru. V této chvíli je jich v milestonech méně, ale pro finální verzi 6.0 se jejich počet výrazně zvýší.

Cílem pro 6.0 je minimálně dosáhnout funkčnosti, co má Eclipse, ale už jsem viděl i některé vlastnosti v denních buildech, které Eclipse neumí.

Jako přívržence editoru Vim mne zajímá, jestli se váš vývojový tým zabývá podporou externích editorů. Nedávno jsem zkoušel pro zajímavost používat gVim s NetBeans, ale narazil jsem na to, že podpora externích editorů byla oficiálně dostupná jenom pro archaickou verzi 3.5. (JP)

Roman Štrobl: Mám pro vás dobrou zprávu. Na SourceForge.net je možné si stáhnout projekt jVi, což je plug-in pro podporu Vi do NetBeans či JBuilder. Testoval jsem ho v poslední stabilní verzi, tj. NetBeans 5.5, a fungoval velmi pěkně. Podporuje nejen klávesové zkratky z Vi, ale funguje třeba také code completion (Ctrl+Space) z NetBeans. Takže získáte to nejlepší z obou světů.

Co se týká editorů Emacs či Eclipse, lze aktivovat keybindings pro Emacs, respektive pro Elipse, pomocí Tools | Options.

Jaká je v současnosti podpora NetBeans pro další jazyky (zejména dynamické Python/Jython, Ruby apod.)? Existuje oficiální podpora ze strany vašeho týmu? (JP)

Roman Štrobl: Ano, plánujeme velmi dobrou podporu pro Ruby a JRuby (včetně code completion, debugování, podpory Rails, Rake atd.). Na této stránce se dozvíte více informací, případně se můžete podívat na flash dema, editace (J)Ruby, (J)Ruby on Rails. Tato podpora je dostupná pro NetBeans 6 (stáhněte M8 a poté Ruby z Tools | Update Center). Podle některých názorů je již podpora Ruby velmi kvalitní a lepší než v jiných IDE. Ale upozorňuji, že se prozatím jedná o preview, tím pádem plug-iny nemusí být stoprocentně stabilní.

Co se týká Jython/Python, podívejte se na plug-in Jpydbg. Také existuje starší projekt Coyote. Můj kolega Geertjan Wielenga začal nedávno pracovat na nové podpoře pro Groovy. Nyní se zaměřujeme na jiné jazyky než Python, ale to neznamená, že po verzi 6.0 se nedá Pythonu větší priorita než v současnosti.

Pro verzi 6.0 máme nový projekt Schliemann, který do NetBeans 6.0 přidá podporu mnoha (více jak sta) jazyků na základě jejich gramatik (po vzoru např. jEdit). Jedná se o základní vlastnosti typu obarvování syntaxe a formátování.

Pro verzi 6.0 se také plánuje velmi slušná podpora JavaScriptu. Již teď existuje plug-in pro JavaScript napsaný komunitou, pracujeme s jeho autorem a doplníme embedování do HTML stránek, debugování a další možnosti. Ve verzi 6.0 také bude k dispozici projekt Phobos, což je serverový kontejner pro JavaScript.

Lepší podpora skriptovacích jazyků bude tedy jeden z hlavních rysů verze 6.0.

Posledních pár týdnů pracuji v prostředí NetBeans 5.5 (java EE 5). Všechno je super, až na náročnost. Nezdá se vám, že NetBeans je docela náročné na výkon počítače? V rámci studia informatiky jsem byl nucen vyzkoušet mnoho prostředí pro vývoj softwaru a NetBeans je z nich nejnáročnější. Je to takový neohrabaný moloch. Jak to vidíte vy? (Martin Damovský)

Roman Štrobl: Co se týká výkonu, tak určitě by mohly být NetBeans rychlejší. Na druhou stranu se dá udělat dost věcí, které výkon zvýší:

1. Zkuste používat pouze základní verzi NetBeans a neinstalovat přídavné balíčky či mnoho plug-inů. Velký počet plug-inů může IDE zpomalit.

2. Neběží vám na pozadí antivirus? Viděl jsem případy, kdy antivirus skenoval všechny soubory, se kterými IDE pracovalo, což jej několikanásobně zpomalilo. Pokud používáte anitivirus na pozadí, nastavte jej, ať neskenuje NetBeans či otevírané java classy.

3. Zkuste si pohrát s parametry pro nastavení paměti. To může výrazně IDE urychlit, pokud máte větší množství paměti. Více informací naleznete zde.

4. Zkuste deaktivovat moduly, které nepoužíváte v Tools | Module Manager.

5. Pokud vám vadí rychlost editoru, tak ta bude lepší ve verzi 6. Můžete zkusit poslední milestone, editor je rychlejší. 6. Pokud nic z výše uvedených rad nepomůže, tak řešením je vždy výkonnější počítač. Především co se týká paměti, na tu je Java obzvlášť náročná.

Je možné v NetBeans tvořit také PHP kódy s podporou debuggerování? Při vývoji JEE (Struts) používám NetBeans hlavně kvůli nenáročnosti veškerých nastavení. Prakticky nainstaluji a vše (Tomcat a jiné) je připraveno bez dalších nastavování. Proto by mě zajímalo, zda lze podobný princip v NetBeans uplatnit i ve spojení s PHP (+Appache). (Zelva)

Roman Štrobl: V NetBeans 5.5 podpora pro PHP není. V NetBeans 6 funguje základní podpora pro PHP (zatím se jedná pouze o základní vlastnosti, jako je obarvování kódu) – plug-in lze stáhnout na Tools | Update Center. V budoucnu bychom funkčnost rádi rozšířili na code completion, debugování apod., ale to závisí na našich zdrojích, které jsou, jak už to bývá, omezené. Prioritu, co se týká skriptovacích jazyků pro NetBeans 6, mají Ruby a JavaScript. PHP je další v pořadí. Samozřejmě pokud se plug-inu chytí vývojářská komunita (jako tomu bylo např. v případě podpory Vi), je možné, že se další funkčnost objeví dříve, ale takové věci se nedají odhadnout dopředu.

SE, EE, JSP, JSF, Struts, Applet, Servlet, Portlet, JDBC, JNDI, JavaBeans, NetBeans atd. Proč musí být Java tak komplikovaná? (Brano)

Roman Štrobl: Protože Java je velmi mocná a řeší komplexní problémy. Java začala jako jednoduchý jazyk a platforma, ale postupným vývojem vznikla kolem ní spousta technologií. S tím, jak řeší více a více problémů, vzniká mnoho frameworků a to pak působí skutečně komplexně. Mezi těmito technologiemi si lze vybrat ty jednodušší. V NetBeans se snažíme vývojáře odstínit od komplexity jazyka a frameworků.

Každopádně pokud se vám nelíbí komplikovanost Javy a děláte webové aplikace, zkuste např. Ruby on Rails či nějaký skriptovací jazyk. Pokud ale pracujete ve větším teamu, Java je velmi dobrá, protože se v ní dají psát čistě velké aplikace, které jsou dobře spravovatelné, což nemusí jít u některých jednodušších technologií.

Jak je to obecně s rozšiřitelností NetBeans? Nedávno jsem zkoušel menší úpravu NetBeans (zobrazování stromu tříd v projektu) a zdálo se, že i zdánlivě primitivní úprava je poměrně obtížným úkolem, pokud člověk nemá velký přehled o celé architektuře. Bylo pro mne docela náročné zjišťovat veškeré vazby, které vyplývaly z úpravy zdánlivě jednoduché komponenty. Pokud mohu porovnat se zkušeností s IntelliJ IDEA, tak napsat si pro ni plugin je jednodušší záležitost. Člověk může zhlédnout jen jeden krátký tutorial a ihned může začít dělat plugin. Přehlédl jsem něco podstatného, či je to záležitost na úrovni architektury (modulární vs. pluginovatelná)? (Vaclav Slovacek)

Roman Štrobl: NetBeansy jsou modulární a lze je tedy libovolně rozšiřovat. NetBeans kromě IDE je také platforma, a dá se proto použít na vývoj aplikací nad platformou. Z tohoto důvodu jsou některé koncepty obecnější než například v IntelliJ IDEA (kterou nelze jako platformu použít). NetBeansy jsou tedy, co se týká rozšiřování, spíše porovnatelné s Eclipse – složitost je podobná.

Neznám API IntelliJ IDEy a beru váš argument, že IntelliJ lze jednoduše rozšířit, ale nemusí to platit vždy. Kdybyste chtěl udělat nějakou rozsáhlejší změnu, nemusí to být jednoduché a třeba ani vůbec možné. NetBeans jsou v tomto ohledu jistě flexibilnější. Jeden z problémů, co se týká rozšiřování NetBeans, je nedostatek dokumentace. Právě nyní vychází výborná knížka o psaní NetBeans plug-inů a o NetBeans platformě. Asi budete muset strávit o něco víc času studiem, ale poté, co napíšete několik plug-inů, zřejmě zjistíte, že se dají API dobře používat.

Dám vám příklad od nás z práce. Můj kolega Geertjan Wielenga, když nastupoval do Sunu, tak neuměl vůbec programovat. Po třech letech umí používat většinu API NetBeans. Podívejte se na jeho blog, kde píše denně o API NetBeans – je to ukázka, že i člověk, co neuměl před několika lety vůbec programovat, dnes píše jeden plug-in za druhým. Souhlasím, že u NetBeans je nemalá learning curve, na druhou stranu si myslím, že vás studium NetBeans API může obohatit. Co se týká plug-inů a platformy, vytvořil jsem 15minutové flash demo, na které se můžete podívat a posoudit, jak je to s modulárností NetBeans. Tutorialy pro rozšiřování NetBeans jsou na adrese platform.netbeans.org.

Zdá se mi, že podpora serverů je docela slabá. Rád bych v NetBeans 5.5 pracoval s Java EE 5, ale Glassfish je pro mě příliš monstrózní, chtěl bych použít Tomcat. Javu EE 5 umí až Tomcat 6, kterého zase nepodporuje NB 5.5. Na podporu Tomcatu 6 si budu muset půl roku počkat, až vyjde NetBeans 6. Přitom Tomcat 6 už je venku pěknou dobu. Je opravdu tak těžké přidat podporu pro Tomcat 6 do updatů NB 5.5, zvlášť když ve vývojové verzi NetBeans 6 máte tuto podporu implementovanou už teď? (Kamil Páral)

Roman Štrobl: Pošlu feedback vývojářům – nemusí být úplně triviální to backportovat, protože některá API mezi 5.5 a 6.0 se mění. Co se týká podpory serverů, tak NetBeans podporuje Tomcat, Glassfish, JBoss, Weblogic, Websphere a dají se doinstalovat plug-iny pro JOnAS a Oracle AS. Také existuje API s dokumentací a tutoriálem, takže další podporu může přidat vývojářská komunita.

Co se týká Tomcatu 6, prozatím doporučuji zkusit používat Milestony NetBeans 6 – snažíme se, aby byly stabilní, a jak se bude blížit release, tak budou mít kvalitu téměř jako release. Příští týden vyjde M9, což je speciální build pro Java One, který by měl být obzvlášť testovaný.

Myslím, že se NetBeans příliš soustředí na zahrnutí co největší škály technologií a docela zapomínají upřednostňovat kvalitu a použitelnost před kvantitou. Například Visual Web Pack byl děs a běs. Házelo to výjimky každých pár minut a dost často se projekt dostal do stavu, kdy to hodilo výjimku hned po otevření. Stejně tak se mi zdá, že se NetBeans zapomněl soustředit na běžné programátorské potřeby a použitelnost základního textového editoru. Všechny věci nejsou „bugy“, ale způsobují strašnou neergonomičnost ovládání. Nehodlá se NetBeans časem soustředit místo na spoustu nových vlastností spíše na základní „usability“? (Kamil Páral)

Roman Štrobl: Co se týká usability, tak máme vlastní usability lab, kde děláme usability testy na lidech, takže usabilitu řešíme. Pokud nám chcete pomoci, zadejte nalezené nedostatky do naší databáze chyb – i usability nedostatky bereme jako chyby. Ve verzi NetBeans 6 se zaměřujeme na základní funkčnost kolem editoru, takže zde se jistě použitelnost dost zlepší (už je to vidět na milestonech v porovnání s 5.5). Některé usability problémy jsou způsobené historicky – např. Visual Web Pack pochází z produktu Java Studio Creator, UML pochází také z jiného produktu. Souhlasím s vámi, že kvalita těchto částí NetBeans nemusí být na stejné úrovni jako kód, který vyvíjí tým v Praze. Do verze 6.0 integrujeme použitelné části z Visual Web Pack do základního produktu a zároveň je opravujeme.

Zaměření na usability místo nových vlastností – to úplně nejde, protože pak by nás konkurence předběhla. Bohužel máme omezené zdroje a technologií či frameworků, které chceme podporovat, je velké množství. Jako open source projekt uvítáme pomoc ve formě bug reportů, nejlepší bug report je ve formě patche s návrhem kódu pro vyřešení chyby.

Dočkáme se standardizací v oblasti API pro IDEs? Bylo by skvělé moci psát pluginy proti standardizovanému API (odhlédnu teď od použití rozdílných GUI toolkitů) a používat v různých IDEs. Stejně tak by bylo skvělé mít standardizované deskriptory projektů, třebas v duchu POMu. (Ondra)

Roman Štrobl: Dobrá otázka. Se standardizací API se to má následovně: existuje JSR 198, za kterým stojí firma Oracle, toto JSR se o standardizaci API snažilo. Ačkoliv JSR bylo odsouhlasené a existuje referenční implementace, implementuje jej pouze JDeveloper. A to z jednoho důvodu. JSR je totiž postavené podle API JDeveloper a pro ostatní IDE není příliš vhodné. Navíc migrace na toto API je značně náročná (kromě JDeveloperu, který API podporoval téměř automaticky). Tento pokus tedy bohužel nevyšel, i když ze strany Sunu jsme na toto JSR koukali a přemýšleli, jak ho implementovat (je to značně složité). Škoda, že se firmy Oracle, Sun, IBM, Borland a ostatní nedohodly na tomto JSR.

Co se týká budoucnosti, tak doporučuji sledovat vývoj kolem modularizace Javy. Je relativně nové JSR 294, které by mělo být implementované v JDK 7. Velká otázka zatím je, jak to bude se vztahem JSR 294 a OSGi. Eclipse je nyní postavená nad OSGi a my v Sunu budeme zřejmě v NetBeans podporovat JSR 294, jelikož je to JCP standard. Snad se podaří tyto dva standardy přiblížit, pak bychom se alespoň mohli dočkat nějaké kompatibility, co se týká modulů (bundlů, plug-inů nebo jak kdo tomu říká). Ale to je čistě teoretické a vzhledem k historii vztahu Sunu a IBM by bylo spíš překvapivé, kdyby se tyto firmy dohodly. Navíc by se jednalo o kompatibilitu modulů, nikoliv API, ale to by mohl být aspoň začátek nějaké kompatibility.

Zmínil jste použití různých GUI toolkitů. Občas si říkám, jak by byl život jednodušší, kdyby byl v Javě jen jeden GUI toolkit. Z mého pohledu dnes není již SWT potřeba, Swing je dostatečně výkonný (viz rychlost např. IntelliJ IDEA) a v JDK 6 už používá nativní renderery, aby zaručil vzhled dle OS, např. na Microsoft Vista. A na ostatních OS už také začíná vypadat opravdu dobře. Kdyby byl jeden toolkit, bylo by možné alespoň vzít panely a ty použít v různých IDE. Například plug-in jVi funguje jak v JBuilderu, tak v NetBeans. Nebylo to tak těžké, protože obě tyto IDE používají Swing. Dostat ho do Eclipse ale znamená velké množství práce. V této oblasti se podařilo Genuitecu spojit SWT a Swing v MyEclipse (používají NetBeans GUI Builder Matisse, zbytek IDE je SWT). Bohužel je to spíš hack a nefunguje to dobře na Macu. Chris Aniszczyk z IBM mi včera tvrdil, že už jsou prý všechny problémy SWT_AWT můstku vyřešené (díky bugfixu před týdnem). Je-li to pravda, tak půjde nějakým způsobem míchat SWT a Swing kód na všech platformách. Ale uživatel asi nebude úplně nadšený (a vývojář, co to bude integrovat, už vůbec ne).

O jiné snaze o kompatibilitu plug-inů nevím. Myslím si, že je pro vývojáře důležitá – nedává smysl psát každý plug-in několikrát. Ale bohužel kromě technických problémů jsou i problémy politické – a to dost zásadní. Jediné, v co lze doufat, je, že trh (případně vývojáři) donutí všechny korporace spolupracovat na novém standardu (který nedopadne jako JSR 198). Takže bohužel, o žádném světle na konci tunelu v tuto chvíli nevím. Naděje ale umírá poslední.

Témata článku: Open source, Eclipse, Plug, Java, Plug In, Swing, Tools, Idea, Muni, Apis, Rake, Rebranding, Spring, Fonts, Catch

9 komentářů

Nejnovější komentáře

  • Roman Strobl 14. 5. 2007 6:27:47
    Nad JVM bezi vice jazyku nez nad .NET. Nevim o zadnem oficialnim seznamu,...
  • PP 13. 5. 2007 12:39:19
    Díky za kvalitní rozhovor, asi začnu živě zas trochu číst i když mi tu...
  • Ladislav Thon 5. 5. 2007 20:01:03
    > máme tu Rotor (zdrojáky)

    Zdrojáky zcela samostatné...
reklama
Určitě si přečtěte

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

** V Brně byl velký výpadek služeb UPC ** Důvodem je překopnutý páteřní kabel ** V některých lokalitách služby stále nefungují

5.  12.  2016 | Jakub Čížek | 104

17 expertek Microsoftu předpovědělo rok 2027. Splní se alespoň něco?

17 expertek Microsoftu předpovědělo rok 2027. Splní se alespoň něco?

** Zmizí klasické vyhledávače ** Budeme programovat buňky ** Kvantové počítače překonají šifry

6.  12.  2016 | Jakub Čížek | 36

11 tipů na dobrý stolní počítač: od základu po herní mašiny

11 tipů na dobrý stolní počítač: od základu po herní mašiny

** Postavte si stolní počítač! Máme pro vás 11 vzorových sestav s rozpisem komponent ** Většina tipů cílí na hráče, věnujeme se ale i základnímu PC a počítačům na střih videa ** Nadělte si nový počítač třeba pod stromeček

5.  12.  2016 | Adam Kahánek | 74

Nejlepší notebooky nad 20 tisíc: poradíme, které teď chcete

Nejlepší notebooky nad 20 tisíc: poradíme, které teď chcete

** V notebooku s cenou nad 20 tisíc nesmí chybět kvalitní displej a rychlé úložiště ** Za dalších deset tisíc můžete dostat navíc styl nebo výkonnější komponenty ** Vybírat můžete z různých velikostí i konstrukcí

8.  12.  2016 | Stanislav Janů | 85


reklama