////
     Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
     regarding copyright ownership.  The ASF licenses this file
     to you under the Apache License, Version 2.0 (the
     "License"); you may not use this file except in compliance
     with the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing,
     software distributed under the License is distributed on an
     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     KIND, either express or implied.  See the License for the
     specific language governing permissions and limitations
     under the License.
////
= Apache NetBeans History
:jbake-type: page
:jbake-tags: about
:jbake-status: published
:keywords: Apache NetBeans History
:description: Apache NetBeans History
:toc: left
:toc-title:
:icons: font

== The student project

NetBeans started as a student project (originally called Xelfi) in the Czech
Republic, in 1996. The goal was to write a link:https://en.wikipedia.org/wiki/Delphi_%28IDE%29[Delphi]-like Java IDE (Integrated
Development Environment) in Java. 

Xelfi was the first Java IDE written in Java, with its first pre-releases in
1997. Xelfi was a fun project to work on, especially since the Java IDE space
was uncharted territory at that time.

image::nb-history-1.png[caption="", title="Here you see the original group of students who constituted the original NetBeans Team"]

The project attracted enough interest that the students, once they graduated,
decided that they could market it as a commercial product selling it as
shareware. Soliciting resources from friends and relatives for a website, they 
tried to form a company around it.

=== Xelfi

Soon after, they were contacted by Roman Stanek, at the time a Director of Operation
in an IT company, that wanted to build his own company and was looking for 
talented programmers. He was looking for a good idea to invest in, and
discovered Xelfi. He met with the founders; they hit it off, and a business was
born. 

=== NetBeans = Network + Java Beans

The original business plan was to develop network-enabled JavaBeans components.
link:http://wiki.apidesign.org/wiki/User:JaroslavTulach[Jaroslav Tulach], who
designed the IDE's basic architecture, came up with the name *NetBeans* (from
Network and Java Beans) to describe what the components would do. The IDE would
be the way to deliver them. 

When the specification for Enterprise Java Beans came out, it made more sense
to work with the standard for such components than to compete with it, but the
name stuck.

In the spring of 1999, NetBeans DeveloperX2 was released, adopting the
`javax.swing.*` package names from the previous `com.sun.swing.*` ones.
NetBeans was the first tool in on the market to support these new package
names, and that increased a lot the awareness of NetBeans.

The performance improvements that came in JDK 1.3, released in the fall of 1999,
made NetBeans a viable choice for development tools. By the summer of 1999, the
team was hard at work re-architecting DeveloperX2 into the more modular
NetBeans that forms the basis of the software today.

=== The First Modular Architecture

Along the way, an interesting thing happened. People began building
applications using the NetBeans IDE's platform, together with their own
plugins, often creating applications that were not development tools at all. In
fact, this turned out to have quite a market. 

Later, in 2000 and 2001, a lot of work went into stripping out pieces that made
the assumption that an application built on NetBeans was an IDE, so that the
platform would be a generic desktop application suitable to any purpose. This
work turned out to be healthy for the codebase of the IDE as well, encouraging
a clean API design and a separation of concerns. This is the reason why
some of the modules of NetBeans are called `org.openide`.

== The Sun era: open source

Something else was afoot in the summer of 1999. Sun Microsystems wanted better
Java development tools, and had become interested in NetBeans. It was a dream
come true for the NetBeans team. NetBeans would become the flagship tool set of
the maker of Java itself! 

By the Fall, with the next generation of NetBeans Developer in beta, a deal was
struck. Sun Microsystems had also acquired another tools company, Forté, at the
same time, and decided to rename NetBeans to Forté for Java. The name NetBeans
was dropped... for a while.

During the acqusition, the young developers who had been involved in
open-source projects for most of their programming careers, mentioned the idea
of open-sourcing NetBeans. Fast forward to less than six months later, the
decision was made that NetBeans would be open sourced. 

While Sun had contributed considerable amounts of code to open source projects
over the years, this was Sun's first sponsored open source project, one in
which Sun would be paying for the site and handling the infrastructure. The
very first decision made was that it sounded logical to call the new site:
NetBeans.org.  

[.feature]
--
image::netbeans-2000-small.png[caption="", title"The NetBeans debugger on Linux in 2000", link="netbeans-2000.png"]
--

In June 2000, the initial netbeans.org web site was launched.
The years that followed focused on continual enhancements from release to
release, as described in the section below.

=== From NetBeans 3.2 to NetBeans 3.6

The first year (through NetBeans 3.2), the project spent trying to find its
feet. The next few years involved learning about what worked in terms of
open-source processes. (In the first two years, the development process was so
open that more time was spent debating than implementing.) 

image::netbeans-36-filesystems.png[caption="", title="NetBeans 3.6 structured the projects as filesystems"]

The growing pains paid off. With NetBeans 3.5, huge strides in performance were
made, and tests and processes put in place to prevent regressions. With 3.6,
the windowing system and property sheet were reimplemented, and the user
interface cleaned up tremendously.

=== NetBeans 4

NetBeans 4, released in December 2004, was a complete change in the way the IDE
worked. A new project system not only revamped the user experience, but also
made it possible to replace infrastructure that had held the NetBeans back. 

The release introduced a project system based on Apache Ant, added JDK 1.5 Support
and had initial support for mobility projects.

[.feature]
--
image::netbeans-40-small.png[caption="", title"NetBeans 4.0 and the Form Editor", link="netbeans-40.png"]
--

The NetBeans 4.1 release (may 2005) was built on top of the new project
infrastructure of 4.0, and added more features and full J2EE support.  

=== NetBeans 5

NetBeans 5 (january, 2006) introduced comprehensive support for developing IDE
modules and rich client applications based on the NetBeans platform; an
intuitive GUI builder (Matisse); new and redesigned CVS support; support for
Sun ApplicationServer 8.2, Weblogic 9 and JBoss 4.

NetBeans 5.5 (october, 2006) and 5.5.1 (may, 2007) supported the Sun Java
System Application Server PE 9 and 9.1 (Glassfish) as well as Java EE 5 API compliance
(JPA, JAX-WS, EJB 3), and through "Enterprise Packs" included enhanced support
for Mobility, C/C++ Projects, SOA applications and BPEL.

=== NetBeans 6

NetBeans 6 (december, 2007) focused on improved developer productivity through a rewritten,
smarter and faster editor, together with the integration of external NetBeans
products into one IDE.

In August, 2010, NetBeans 6.9.1 was released with link:https://www.osgi.org/[OSGi support],
bundling the link:http://felix.apache.org/[Apache Felix OSGi container]. It also
supported link:https://openjfx.io/[JavaFX 1.3.1], was Java EE 6 compliant and
included support for PHP, Ruby, C and C++ and many other features.

== The Oracle era

When Oracle acquired Sun in 2010, NetBeans became part of Oracle. Oracle
actively seeked for new developers to work on the NetBeans team and sees
NetBeans IDE as the official IDE for the Java Platform.

=== NetBeans 7

NetBeans 7 was released together with JDK 7, providing editor tools for working
with new JDK 7 language constructs, together with support for JavaFX 2.0.

NetBeans 7.1 introduced link:http://wiki.netbeans.org/Netigso[Netigso] from (Net and 
a reversed OSGi). This was reused in Oracle's JDeveloper as well,
with link:http://wiki.apidesign.org/wiki/JDeveloper[important performance enhancements].

Releases from NetBeans 7.2 (january, 2012) to NetBeans 7.4 (october, 2015) continued
introducing important features (HTML5, Cordova application development, enhanced
JavaScript support and more) and improving performance.

=== NetBeans 8

NetBeans 8.0 (march, 2014) introduced full JDK 8 support for working with
Profiles, Lambdas and Streams. Java ME Embedded 8 support and a wide
range of JavaEE compliant application servers (WildFly, WebLogic, GlassFish, TomcatEE).

It also continued improving support for Maven, HTML5, PHP, C/C++ and JavaScript.

The 8 series last release was NetBeans 8.2 (october, 2016) that introduced
ECMAScript 6 enhancements and experimental ECMAScript 7 support, while
improving node.js, Oracle JET and PHP 7 support.

== The Apache Incubator era

In 2016 Oracle donated the source code of NetBeans to the link:https://www.apache.org/[Apache Software Foundation],
and started as a podling in the link:http://incubator.apache.org/[Apache Incubator Project].

During approximately two years and a half many volunteers joined the podling, and work started to
adapt the codebase to comply with the Apache Software Foundation Guidelines. 
The link:/community/index.html[Apache NetBeans Community] started growing, and in april 2019 the
podling became a Top Level Apache Project.

=== NetBeans 9

In July, 2018, the Apache NetBeans Team released
link:http://netbeans.apache.org/download/nb90/[Apache NetBeans (Incubating) 9],
the first release of the Apache NetBeans (incubating), with the main objectives
of IP clearance from the Oracle code donation and adding Java 10 support.

In October, 2018, link:https://blogs.oracle.com/java/announcing-2018-dukes-choice-award-winners[Apache NetBeans (incubating)] was
honored as a Duke's Choice Award Winner.

=== NetBeans 10

In December, 2018, the Apache NetBeans Team released
link:http://netbeans.apache.org/download/nb100/[Apache NetBeans (Incubating) 10], the second release of the Apache NetBeans (incubating), 
focusing in adding support for JDK 11, JUnit 5, PHP, JavaScript and Groovy, while solving many issues.

=== NetBeans 11

In March, 2019, link:http://netbeans.apache.org/nb110/[Apache NetBeans (Incubating) 11] was announced as the
  third release of Apache NetBeans, sporting a renewed Gradle Support, a Maven First project wizard,
  Java EE and JDK 12 support, as well as initial versions of NetBeans Maven Plugins the Apache NetBeans Tutorials.

[.feature]
--
image::nb11-small.png[caption="", title"Apache NetBeans (incubating) 11 showing the Lookup", link="nb11.png"]
--


== The Apache Top Level Project era

In April, 2019, the Apache NetBeans (Incubating) podling became a Top Level Apache Project.

Today, the Apache NetBeans Team couldn't be prouder of how far the NetBeans project
and community has come. It is also worth noting that many of the original
architects are still involved in the project, and can be found participating on
the NetBeans mailing lists. 

Welcome to Apache NetBeans! The Apache NetBeans Community link:/participate/index.html[is inviting you to participate!].



