blob: 6641821c59379cca3b9e693fdadc3f66b044cdb7 [file] [log] [blame]
<html>
<head>
<title>NetBeans Platform Description</title>
</head>
<body>
<p class="align-right font-13">
<span class="green">|</span> <a href="./">Home</a> <span class="green">|</span> <b class="font-light">Description</b> <span class="green">|</span> <a href="https://platform.netbeans.org/screenshots.html">Showcase</a>
</p>
<br>
<img src="https://netbeans.org/images_www/screenshots/platform/blueMarine_thumb.png" class="img-right">
<p><b>Why would you use the NetBeans Platform?
What does the NetBeans Platform give you? Many
out-of-the-box components and
much else besides.</b>
<h2>Description of Main Reusable Components</h2>
<p>The main reusable components comprising
the NetBeans Platform are as follows:
<h3>Modular Runtime Container</h3>
<p>
Just as application servers
such as GlassFish provide
lifecycle services to web applications,
the NetBeans runtime container
provides them to Swing applications.
Application servers understand
how to compose web modules, EJB modules,
and so on, into a single web application,
just as the NetBeans runtime container understands
how to compose NetBeans modules
into a single Swing application. <p>Modularity offers
a solution to "JAR hell" by letting
developers organize their code into strictly
separated and versioned modules. Only
those that have explicitly declared
dependencies on each other are able to use
code from each other's exposed packages. This
strict organization is of particular relevance
to large applications developed by
engineers in distributed environments, during
the development as well as the maintenance of their
shared codebase.
<p>End users of the application benefit too
because they are able to install modules
into their running applications, since modularity
makes them pluggable. In short, the
NetBeans runtime container is an execution
environment that understands
what a module is, handles its lifecycle,
and enables
it to interact with other modules
in the same application.
<p>Watch the video:
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=41902674001&playerID=1640183659&domain=embed&" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" bgcolor="#FFFFFF" flashVars="videoId=41902674001&playerID=1640183659&domain=embed&" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object>
<h3>Loose Coupling & Context Sensitivity Management</h3>
<p>
The JDK 6 ServiceLoader class lets
you load objects into a standard
Java application's application context.
The NetBeans equivalent, which is the
Lookup class, provides the same functionality,
dependency injection, and much else besides. <p>Not only can you
use this class to enrich a module's context,
but also the context of windows and other components within
a module.
The Lookup feature enables
modules to communicate with each other
in a type-safe manner and in such a way
that objects defined in one module can
be used in another module, without the
two modules needing to depend on each other.
</p>
<p>Watch the video:
<p> <object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=41915822001&playerID=1640183659&domain=embed&" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" bgcolor="#FFFFFF" flashVars="videoId=41915822001&playerID=1640183659&domain=embed&" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object>
<h3>System FileSystem</h3>
<p>
When you install applications onto
your computer, the application's installer
writes folders and files into the
operating system. The
NetBeans filesystem offers similar
functionality to your Swing applications.
Each module installed into a Swing application
can install folders and files
into the application's filesystem, allowing
other modules in the application to find
them and use them. <p>For example, if there
are settings that you'd like one module to make available
to your application, you can register them
in the filesystem. In this way, the
NetBeans filesystem enables modules
within your application
to communicate with each other.
<p>Watch the video:
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=41915891001&playerID=1640183659&domain=embed&" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" bgcolor="#FFFFFF" flashVars="videoId=41915891001&playerID=1640183659&domain=embed&" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object>
<h3>Window System</h3>
<p>
Most serious applications need
more than one window. Coding good
interaction between multiple
windows is not a trivial task.
Out of the box,
the NetBeans Platform provides
functionality such
as maximize/minimize, dock/undock,
and drag-and-drop of windows
in your application. That is made
possible because windows in
a NetBeans Platform application
are
part of the NetBeans window system.
</p>
<p>Watch the video:
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=41911819001&playerID=1640183659&domain=embed&" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" bgcolor="#FFFFFF" flashVars="videoId=41911819001&playerID=1640183659&domain=embed&" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object>
<h3>Data Management</h3>
<p>
With the NetBeans Platform, you're not
constrained by one of the typical
pain points in Swing: the JTree model
is completely different to the JList model,
even though they present the same data.
Switching between them means
rewriting the model. The NetBeans Nodes API provides
a generic model for presenting your data.
The NetBeans Explorer & Property Sheet API
provides several advanced Swing comonents
for displaying nodes. As a result,
by rewriting one
single line of code, you can
completely change the
way the model is presented without
touching the model at all. In turn, this
lets you very quickly and efficiently
present data to your users.
</p>
<p>Watch the video:
<P><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=41913381001&playerID=1640183659&domain=embed&" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&publisherID=1460825906" bgcolor="#FFFFFF" flashVars="videoId=41913381001&playerID=1640183659&domain=embed&" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object>
<!-- <h3>Action System</h3>
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque fringilla. Donec eu ante. Nam nisl mi, adipiscing in, auctor non, blandit ut, dui.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque fringilla. Donec eu ante. Nam nisl mi, adipiscing in, auctor non, blandit ut, dui.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque fringilla. Donec eu ante. Nam nisl mi, adipiscing in, auctor non, blandit ut, dui.
</p>
<h3>Extensions to Swing</h3>
<p>The NetBeans Platform provides
the following custom components:
<ul>
<li>TopComponent
<li>Visual Library
<li>Explorer Views
<li>Miscellaneous Swing Components
</ul>
<h3>Ready-To-Use Components</h3>
<p>By simply selecting one checkbox, and
without you needing to do any coding at all,
your application can use the following
NetBeans Platform components:
<ul>
<li>Favorites Window
<li>Plugin Manager
<li>Options Window
<li>JavaHelp System
</ul>
</p>-->
<p><h3>Other Benefits</h3>
<p><p>Other factors that have persuaded developers to use the NetBeans Platform include
the fact that the NetBeans Platform uses Swing, which is the official standard UI toolkit,
that it enables applications to have a consistent look and feel,
that the Matisse GUI Builder enables you to very easily design your application's
layout, that <a href="http://bits.netbeans.org/dev/javadoc/index.html">the NetBeans Platform provides a rich set of APIs</a>, and that the
NetBeans Platform is <a href="https://platform.netbeans.org/screenshots.html">tried</a>, <a href="http://qa.netbeans.org/">tested</a>, and <a href="http://platform.netbeans.org/whatsnew/65.html">continually being improved</a>. Finally,
<a href="http://forums.netbeans.org/platform-users.html">the community is helpful and diverse</a>, while <a href="http://planets.sun.com/nbplatform/group/Prague/">blogs</a>,
<a href="https://platform.netbeans.org/articles/books.html">books</a>,
<a href="https://platform.netbeans.org/tutorials/">tutorials</a>, and <a href="http://edu.netbeans.org/contrib/slides/netbeans-platform/">training materials</a>
are continually being developed in multiple languages by many different people
around the world.
</body>
</html>