There are hundreds of programming languages used for different purposes and development of different types of applications. Java is a prominent and widely used programming language that is used for development of mobile, web, desktop, and enterprise solutions. To develop an application, it requires setting up a suitable development environment. Development of such a platform requires selection of suitable components for code editor, compiler or interpreter and debugger at the minimum. But the manual process takes too much time, there are compatibility issues among the components, and it is not suitable for developing larger applications. IDEs or Integrated Development Environments connects and integrates such components together and are being delivered as a single application to developers. Developers just need to install those or access IDEs on cloud to write, compile and debug codes. IDEs have made the process easier for the developers and the people who are learning Java for the first time.
In the paper, it contains information about IDEs and why the IDEs are important to teach programming. The selected language is Java for the paper and it shows the possible difficulties without using IDEs, the benefits of IDEs, and the features of some prominent and widely used IDEs for Java.
The aim of the report is to present information about some of the language specific IDEs for the Java programming language. IDE or Integrated Development Environment is a special type of software offers a comprehensive set of facilities to write codes for computer programs in different programming languages such as C, C++, Java, Python etc. Usually, most of the modern IDEs provide support for different specific languages and are automatically tuned for a selected language. IDEs combine code editor, debugger, and automation tools for building and compiling a computer application. Modern IDEs also have intelligent code compilation support.
Overview of the Issues
To write a computer program, the bare minimum requirements are having a code editor like notepad in Windows machines or Vi Editor in Linux machines or similar platforms in different operating systems, as well as having a compiler or interpreter depending on the chosen language. Even there are some programming languages that do not require IDEs (Wielenga, 2015). But there are several issues that are resolved by using IDEs, the issues are,
- Sometime is it hard to write organised code without IDEs. Because code editors like notepad does not support features like checking the syntaxes, pointing out the syntactical errors, auto suggestions etc. So, the process is time consuming.
- Without IDEs there is a chance that there may be lots of typing errors in the code. So, it will require scanning through the entire code before compiling it. Again the process is time consuming and there are very high chances of manual errors.
- For writing long codes, simple code editors are not suitable enough to organise the code in a readable format and to understand the same easily.
- Without using an IDE for a programming language like Java, it will require selection, deployment, integration and management of several tools to manually set up an information system development environment. The process is not only error prone or time consuming, but there may be compatibility issues and an extra overhead of the management and updating the environment manually.
Integrated development environments or IDEs consolidates the basic tools required for writing and testing computer applications. There are numerous tools that are used by software developers during the time of writing code, compiling and building the application and testing. Components like code editors, code libraries, compilers, and testing platforms are required during the process. An IDE brings all such development related tools at one place and makes a single service, framework or application to install and to start writing codes and compiling the same (Wielenga, 2015).
There are open source IDEs and paid IDEs. The emergence of cloud computing has created a new kind of cloud based IDEs in comparison to the traditional standalone IDEs.
Some of the common features of IDEs used for programming language Java are,
- A single GUI or Graphical User Interface that connects a code editor, interpreter, compiler, and debugger. All these components are accessed through the GUI platform. A user writes the source code on the code editor and compiles the code from the same platform. The debugger also helps to resolve syntactical errors. Compiler translates the java source code into byte code and then makes the executable from the same. To resolve the issues related to bugs, the debugger tool is useful.
- Modern IDEs contain object and data modelling tools, programmable editors, and automation tools to manage the code library and to build the compiled code ready for running.
- The IDEs use colour-based code organisation, formatting of source code, diagnostics of errors and reporting. Some of the IDEs also supports intelligent code completion.
- Through the user interface of an IDE, a developer or a group of developers can do operations such as code compilation, incremental code execution, and management of the changes made to the source code in a uniform way.
- Typically, IDEs are designed in such a way, that is can integrate various third party tools, version control libraries like Subversion from Apache, Github etc.
- IDEs also supports model driven development or MDD. In such an environment, a developer starts with development of a model for an information system, then with the help of the automated code generation feature of the IDE, it can translate the same into a suitable set of codes relevant to the model (Wielenga, 2015). The IDE also helps further to debug and test the code generated by the automated model driven code generation. Such IDEs require high level of automation. Once the application is built by such IDEs, the same can be used for further testing, and deployment.
Benefits of using IDEs
The benefits of IDEs for Java are listed below.
- An IDE can help to improve the productivity of a software developer by offering faster set-up and installation process offered by the IDEs. It takes lesser time to install, integrate and set-up all components required to build an application development environment.
- Selection of the components from wide range of available options is a time consuming and challenging task. Without IDEs a lot of time of the developers would have been spent on selecting a suitable tool for each of the phases of the application development process. There are inherent compatibility issues in some cases where the selected set of components may not be used for development of an application. Hence, IDEs saves time of a developer or a development team (Wielenga, 2015).
- IDE brings uniformity in a development team. For example, if each team members were given the option to manually set-up their application development environment, then they might select different set of tools. In the same software development team, if each member uses different IDEs to build the same software, then the task to integrate code with one another and other compatibility issues may arise. In such a scenario, IDEs bring more uniformity by allowing all members to use the same environment, it becomes easier to collaborate with other team members. It also makes error processing and troubleshooting easier.
- Without IDEs, it takes time to learn about each tools and how to use those. For example, it takes time to learn each individual tasks, configuration of the components, and so on. All such tools are connected to an integrated development environment
- All tools are connected and covered by a single user interface. An IDE can help in standardization of the development process. It organises all necessary features for software development user interface.
- It is suitable for the learners as IDEs provide guided experience to the developers.
IDEs for Java
There are many modern IDEs for Java. And most of the popular IDEs are open source and available at free of cost. Some of the important features offered by the Java IDEs are,
- To build Java applications
- Code inspection
- JUNIT testing
- Code assistance
- Visual GUI builder
- Multiple refactoring
- Code editor
- Java and Maven code building tools
- Data modelling
- Building queries
NetBeans is a leading IDE for Java programming. It is also written in Java. It helps in building various kinds of Java applications like Java SE, Java ME, Java FX, web based applications, mobile applications and EJB. NetBeans offer modular code design (Wielenga, 2015). So, developers can extend the code by adding third party solutions, plugins etc. to enhance the functionalities (Niemeyer & Leuck, 2013).
Apache has made NetBeans easier for collaboration. Even though NetBeans is preferred for Java and it is widely used for it. But it also supports programming languages including, C, C++, HTML5, PHP. Some of the important features of NetBeans for Java are (Niemeyer & Leuck, 2013),
- Support for Maven framework
- Ant based project systems
- Code refactoring
- Version controlling using subversion, Git, CVS, Clearcase and Mercurial.
- It has dual licence of software development
- It is a cross functional platform that runs on most of the leading operating systems like Windows, Linux, OS X, Solaris and other platforms that are compatible with Java Virtual Machine or JVM.
- It also supports cloud based development of Java applications. For example, it can be used along with Google App Engine.
It shows the NetBeans IDE for Java. It shows how it guides a user to write code on the platform.
Eclipse for Java
Eclipse is another example of a leading IDE used for Java and many of the other programming languages (Kulkarni, 2018). Most of the part of the Eclipse are written in Java. It allows development of cross functional applications in Java. For example, the applications for web, mobile, desktop and enterprise editions are developed on this platform (Kulkarni, 2018).
Some of the important features of Eclipse for Java are,
- Integration with the Maven framework
- Support for Windows Builder
- Support for XML editor, Mylyn (Gallardo, Burnette, & McGovern, 2013)
- Version controlling with Git, CVS
- It offers a workspace that can be extended further with the help of external plugins (Conrod & Tylee, 2017)
- It is available under public license for the OS families like Windows, Linux and OS X.
- The Eclipse runtime system works on the basis of the Equinox. It is an implementation of a core framework specification known as OSGi. While using Java for Eclipse, it can be extended to cover other programming languages like Python and C. The available plugin framework of Eclipse supports it (Kulkarni, 2018).
- It works with typesetting languages like LaTeX
- It works well with the process of development of various database management applications and networking applications like telnet (D'Anjou, Fairbrother, Kehn, Kellerman, & McCarthy, 2015).
- The Eclipse plugin architecture helps to write any extension on the IDE for example, it allows to write code for configuration management
- Eclipse support integration between Java and CVS for version controlling. It also supports other version controlling systems using plugins.
- It also supports MDD. Plug-ins for UML or Unified Modelling Language is also added to the platform.
- Other than the run-time kernel, all other things are considered as plug-in in Eclipse. So, the plug-ins developed on the platform are integrated with the solution like any other plug-in. There is a wide variety of plug-ins available for it (Kulkarni, 2018).
- JDT or Eclipse Java development tools are also offered by the IDE. There is a built-in Java Incremental compiler that works with the complete model of the Java Source files. It also allows refactoring and code analysis (D'Anjou et al., 2015).
- The workspace can be used to make modification to external files connected as resources, changes to metadata and so on.
- It allows implementation of graphical control elements of the Java Toolkit. It is called SWT or Standard Widget Toolkit and AWT or Abstract Window Toolkit
- It provides RCP or Rich client Platform for developing general purpose Java applications based on the standard build platform, Equinox OSGi.
- It works well with server development platforms like Glassfish, Tomcat etc.
The report contains detailed information of IDEs suitable for Java and supports Java based application development process. IDEs are useful to write organised codes and development of applications in lesser time. The report contains detailed information about why the IDEs are useful, what problems are being solved by the IDEs and IDEs for Java,