Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Create a Commercial-Quality IDE

DZone's Guide to

Create a Commercial-Quality IDE

· Java Zone ·
Free Resource

FlexNet Code Aware, a free scan tool for developers. Scan Java, NuGet, and NPM packages for open source security and open source license compliance issues.

What does it take to create a complete development environment for a technology or language? Well, a lot of work, starting with planning, then setting up a sustainable architecture, after which you can start coding the various features you need.

Let's use the infrastructure of NetBeans IDE as the basis of our own IDE. That means we'll remove everything that makes NetBeans IDE distinct, leaving us with an empty shell that we can refill with our own specific needs.

  1. Open NetBeans IDE and choose File | New Project. Then choose NetBeans Modules | NetBeans Platform Application. Name the new application "My IDE" and specify where its files should be stored. Click Finish. You now see a project structure in the NetBeans IDE Projects window.

  2. Right-click the new project structure and choose Properties. In the Properties window, go to Libraries and check the three check boxes shown below:

  3. Run the application and you will see the following:

    Open a few windows and have a look at all the features you have out of the box, e.g., the starting point for a custom project system, the starting point for a custom menu bar and toolbar, a custom debugger, a terminal window, and much more:

  4. Go to the NetBeans Platform Learning Trail to learn all the different ways in which you can extend the above infrastructure with your custom contributions.

For inspiration, see what Microchip has done, i.e., created their own IDE on top of the above infrastructure, as well as many others.

 Scan Java, NuGet, and NPM packages for open source security and license compliance issues. 

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}