NetBeans

NetBeans IDE je svobodné, zdarma distribuované integrované vývojové prostředí (IDE), které vlastní firma Oracle Corporation, které též sponzoruje jeho vývoj. V současné době je NetBeans v režii Apache Software Foundation. Technologický základ tvoří platforma NetBeans. Primárně je určeno pro vývoj v programovacím jazyce Java (Java SE, Java EE, Java ME), ale díky modulární softwarové architektuře umožňuje programování i v jiných programovacích jazycích (PHP, HTML5/CSS, JavaScript, C/C++, Groovy). Celé prostředí je naprogramováno v jazyce Java, a proto ho lze spustit na různých operačních systémech (Microsoft Windows, Linux, macOS a Solaris).

Vývojové prostředí NetBeans je částečně komunitně vyvíjený software. Kromě profesionálních vývojářů placených firmou Oracle je v současné době registrováno více než 800 000 přispěvatelů, jejichž přínos spočívá mimo jiné v tvorbě zásuvných modulů, které rozšiřují funkcionalitu programu, poskytování podpory pro vývoj za pomoci aplikačních frameworků, hlášení chyb, překladů do národních jazyků a podobně.

Historie NetBeans 
Verze NetBeans IDE
 1996 – Vznik českého studentského projektu pod názvem „Xelfi“, jehož cílem bylo vytvořit prostředí podobné Delphi.
 1997 – Roman Staněk vstupuje do původního studentského projektu a podílí se na vytvoření jeho komerční verze.
 20. říjen 1999 – Společnost Sun Microsystems provádí akvizici NetBeans Česká republika a.s. 
 7. leden 2010 – Akvizice Sun Microsystems společností Oracle corporations.

Podpora Jazyka Java 
NetBeans IDE může podporovat různé technologie spojené s jazykem Java pomocí komunitních rozšíření. Výčet obsahuje základní funkcionalitu.

 Grafický debugger.
 Obsluha automatizačních nástrojů Ant, Maven, Gradle.
 Syntaktická analýza zdrojového kódu a nápověda.
 Zobrazení dokumentace JavaDoc.
 Podpora vývoje na základě standardů definovaných Java Enterprise Edition.

Nástroj pro tvorbu GUI 
Nástroj pro tvorbu grafického uživatelského rozhraní je součástí balíčků pro Java Standard Edition a Java Enterprise Edition. Umožňuje metodou „táhni a pusť“ sestavit různé druhy aplikačních a dialogových oken. Podporovány jsou komponenty knihoven AWT a Swing.

Ostatní podporované technologie 
V základní verzi obsahuje prostředí podporu pro JavaFX, Java EE, Java ME, PHP, HTML5/CSS, JavaScript, C/C++, Groovy. Dále je možné rozšířit podporu pomocí přídavných modulů. NetBeans IDE dále zjednodušuje práci s frameworky jako je Struts nebo Ruby on Rails a umožňuje mimo jiné vývoj SOAP aplikací a webových služeb i webových aplikací.

Licencování 
NetBeans IDE umožňuje svému uživateli volbu licence, pod kterou bude program užívat. Na výběr je svobodná licence GNU GPL v2 a GNU nekompatibilní licence Common Development and Distribution License. Některé distribuce NetBeans mohou obsahovat části, které podléhají licencím třetích stran.

Vývojová platforma NetBeans 
NetBeans je známé vývojové prostředí (IDE) určené pro vývoj Java aplikací. Jádro IDE je tzv. NetBeans platforma, modulární a rozšiřitelný aplikační framework. Modulární architektura NetBeans přináší tyto výhody:

 zjednodušuje vytváření nových prvků aplikace,
 vytváří jednoduché přidávání a mazání nových prvků aplikace pro uživatele,
 zjednodušuje aktualizace již nainstalovaných prvků aplikace.

Platforma NetBeans se řadí mezi tzv. Rich Client Applications, tj. mezi aplikace, které pracují na straně klienta, kde nejenže data zobrazují, ale dochází i k jejich zpracování (logika se nenachází na straně serveru). RCA bývají rozšiřitelné pomocí pluginů a modulů.

Základní terminologie 
Níže jsou uvedeny anglické termíny, které jsou důležité pro vývoj aplikací a jsou standardem ve všech publikacích o této problematice.

 NetBeans Platform – Kostra aplikace, která poskytuje běžný základ pro swing aplikace.
 NetBeans Platform application – Aplikace vytvořena s NetBeans Platform jako jejím počátečním stavem.
 NetBeans Runtime Container – Slouží jako jádro NetBeans platform a přebírá na sebe všechnu zodpovědnost za běh aplikace. Nahrává všechny dostupné moduly, z kterých je potom vytvořen interní registr. Dovoluje dynamické instalování a odinstalování modulů, které jsou v tu chvíli dostupné. Kontejner výchozí aplikace se skládá z těchto modulů: Utilitis API, Module System API, FileSystems API, Bootstrap, Startup.
 NetBeans System FileSystem – Hlavní registr konfigurace aplikačních dat. Sestavuje se z layer.xml souborů všech použitých modulů v aplikaci. Obsahuje například složení horního menu aplikace.

Začátek s NetBeans platformou 
Vytvoření jednoduché aplikace (menu New Project → NetBeans Modules) nabízí ve vývojové platformě NetBeans několik možností:

 Module – Vytváří zdrojovou strukturu jednoho bloku rich client application.
 Module Suite – Vytváří zdrojovou strukturu rich client aplikace. Standardně všechny moduly, které jsou vytvořeny a zahrnuty do NetBeans IDE, jsou vytvořeny pomocí tohoto průvodce.
 Library Wrapper Module – Vytváří modul, který obsahuje jeden nebo více knihoven, jako jsou knihovny Log4J a JDom. Knihovny jsou potřeba jedním nebo více moduly ve skupině. Například když máme library wrapper module pro knihovnu Log4J a verze knihovny Log4J se zvýší, my vytvoříme novou verzi našeho modulu a umístíme do modulu našich uživatelů, zatímco všechny ostatní moduly zůstanou nezměněny.

Vytvořit základní aplikační okno můžeme dvěma způsoby. První je klasický přes New Project → NetBeans Modules → NetBeans Platform Application. Druhý způsob je přes skriptovací jazyk Groovy – New Project → Samples → Groovy → NB Project Generators. Poté stačí jen najít složku, ve které se projekt vytvořil (složka se vypíše do standardního výstupu), a otevřít projekt. Aplikace vytvořená přes Groovy má oproti aplikaci vytvořené standardním způsobem jednu odlišnost, a to, že v záložce Tools má standardně vloženou záložku Plugins.

Modulární architektura 
V této sekci si popíšeme, jak se vytváří moduly do NetBeans IDE.

Typy Modulů 
Moduly mohou hrát odlišné role. Některé moduly přidávají nové elementy do uživatelského prostředí, jiné zase plní funkce knihoven důležitých funkcionalit. Každý modul má odlišné požadavky na jeho zařazení do aplikace. Protože sestavovač aplikace a skutečný výrobce modulu nemusí být jedna osoba. Dobrý kontejner pro uskutečnění modulárních aplikací poskytuje nějaké atributy, které dovolí modulu být anotován s popisem jeho požadavků, které musí být vyplněny, aby mohl být modul přidán do aplikace. V ideálním případě, tyto atributy nejsou použitelné jen pro člověka, který sestavuje aplikaci, ale i pro kontejner, který provádí realizaci. NetBeans runtime container poskytuje různé druhy užitečných atributů.

Modul uživatelského prostředí 
Nejjednodušší typ modulu je modul, který přispívá funkcionalitou, jako je přidání menu položky, tlačítek nebo komponent. Tyto moduly neukazují žádnou jinou funkcionalitu, která by mohla být použita ostatními moduly. Takový modul bude nejspíše proto, aby napomáhal uživateli s ovládáním. Proto je uživateli dána možnost přes Module Manager vyřadit nebo naopak zařadit tento modul do uživatelského rozhraní. Uživatel tak dostává možnost přizpůsobovat si uživatelské rozhraní (menu, toolbary, ...) s tím, že po vypnutí aplikace se změny zapíší do souborů a při opětovném spuštění je použit již přizpůsobený vzhled aplikace.

Modul jako jednoduchá knihovna 
Jednoduchá knihovna je běžný typ moduly široce používaný lidmi pro psaní open source nebo jinak znovupoužitelných knihoven, jako je například Apache Commons Collections. Ve skutečnosti se jedná o soubor typu JAR s několika balíčky, které obsahují použitelné třídy.

Modulární knihovna 
Implementace v odlišných modulech a jejich separaci si doslova vynucuje. Vyskytuje se zde modul, který obsahuje specifikace, čímž se rozumí rozhraní, abstraktní třídy. Poté se zde nachází několik modulů, které tuto specifikaci implementují.

Životní cyklus modulu 
Životním cyklem modulu se rozumí start, vypnutí, nahrávání a uvolňování modulu. Jedná se o třídu, která dědí od abstraktní třídy ModulInstall. Stačí, když překryjeme potřebnou metodu modulu.

public class Installer extends ModuleInstall {
    @Override
    public void restored() {
        System.out.println("HelloWorld !!");
    }
}

Rušení vazeb mezi moduly 
Rušení vazeb mezi moduly je jedna z nejdůležitějších částí systému založených na modularitě. Tím, že zrušíme co nejvíce vazeb mezi moduly, dosáhneme toho, že moduly budou jednoduše použitelné. Tím je myšleno, že jejich instalování a odinstalování nebude závislé na ostatních modulech a bude tak moct být vybudována aplikace přesně podle představ jejího tvůrce. Jeden z nejvýznamnějších způsobů je Global Lookup. Je možnost si definovat své vlastní lookup nebo používat lookup například objektu TopComponent.

Globální Lookup 
Lookup je mapa, kde klíče jsou objekty typu Class (nejčastěji rozhraní) a hodnoty jsou instancí těch tříd. Jedná se o způsob, jak snadno sdílet informace mezi moduly v jedné aplikaci, aniž by byly moduly mezi sebou závislé. Jeden modul přidá (pomocí vzoru Service provider) do objektu aplikace Lookup nějakou třídu a zcela jiný modul může z tohoto Lookup danou třídu vytáhnout.

Lookup.Template template = new Lookup.Template<Foo>(Foo.class);
Lookup.Result<Foo> foos = Lookup.getDefault().lookup(template);
Collection<? extends Foo> c = foos.allInstances();

System Filesystems 
Každý modul přidaný do aplikace má svůj XML Filesystem (soubor layer.xml). Ve výsledku se sloučí tyto souborové systémy jednotlivých modulů a vytvoří tzv. MultiFileSystem. Jedná se o hlavní registr nakonfigurovaných dat deklarativně jednotlivými moduly. Tento souborový systém nám nakonec může například ukázat, jak má vypadat horní menu aplikace, ukáže se, jestli nějaké moduly nepřidaly, nebo naopak nezakázaly zobrazování některých položek. V kapitole Lookup jsme si ukazovali deklarativně registrační mechanismus, který je použitelný pro jednoduchou registraci objektů. System Filesystem se používá, když chceme zaregistrovat objekty navíc s určitými metadaty.

Následující kód způsobí zmizení položky Menu:
<filesystem>
   <folder name=”Menu”>
      <folder name=”Help_hidden”>
   </folder>
</filesystem>

Odkazy

Reference

Související články 
 Eclipse
 IntelliJ IDEA
 BlueJ

Externí odkazy 
 
 Domovská stránka projektu NetBeans

Svobodný aplikační software
Software v Javě
Vývojová prostředí pro Javu
Software firmy Sun Microsystems