User:Jsharda/IntelliJ IDEA

IntelliJ IDEA is a Java integrated development environment (IDE) for developing computer software. It is developed by JetBrains (formerly known as IntelliJ), and is available as an Apache 2 Licensed in both community edition, and proprietary commercial edition. The latest stable version of IntelliJ IDEA (14.1.5) was released on September 25, 2015.

History
The first version of IntelliJ IDEA was released in January 2001, and was one of the first available Java IDEs with advanced code navigation and code refactoring capabilities integrated.

In a 2010 Infoworld report, IntelliJ received the highest test center score out of the four top Java programming tools: Eclipse, IntelliJ IDEA, NetBeans and Oracle JDeveloper.

In December 2014, Google announced version 1.0 of Android Studio, an open source IDE for Android apps, based on the open source community edition of IntelliJ IDEA. Other development environments based on IntelliJ's framework include AppCode, PhpStorm, PyCharm, RubyMine, WebStorm, and MPS.

System requirements

 * Windows: 10/8/7/Vista/2003/XP | MacOS X: 10.5 - 10.9 | Linux: GNOME or KDE desktop
 * 1 GB RAM minimum, 2 GB RAM recommended
 * 300 MB hard disk space + at least 1 GB for caches
 * 1024x768 minimum screen resolution
 * JDK 1.6 or higher

Licensing
IntelliJ licensor is JetBrains s.r.o. in Czech Republic registered with Commercial Register. All authorized users must have their profile record on JetBrain's account site which identifies the user and all the permissions he has. IntelliJ offers commercial and personal licenses based on the user’s requirements. Commercial licenses are available as both stand-alone purchases as well as bundled with an upgrade subscription. IntelliJ provides free licenses for students, teachers, training and open source projects.

Releases
The latest release of IntelliJ is 14.1. Below are all its releases.

Platform
The IntelliJ platform is structured in a logical combination of components. Some of them are discussed below:

Projects
Projects in IntelliJ lend structure to the software development performed on IntelliJ. Projects settings can be configured for Modules,Facets,Artifacts, Libraries and Project wide.

Modules are functional units of the software that can be singly developed and integrated later to create a whole project.

In Libraries settings, the libraries on which the project is dependent or the project uses are configured.

Facets are similar to libraries but the contain setting specific to frameworks and technologies that are being leveraged by the project.

Artifacts settings are used to configure the structure of the software. Artifacts define what the output of the development is. Typical outputs are deployable units like JAR and WAR files.

SDK
SDK is the development kit or a set of tools that enable the creation of applications. IntelliJ does not contain any SDK out of the box and SDK need to be separately installed and specified in the IntelliJ settings.

Library
The libraries contain the pre-compiled programs used to develop an application in IntelliJ. They extend useful capabilities like file reading and expression matching. IntelliJ allows developers to include libraries at 3 levels: Globally for all projects, Project libraries that are specific to a Project and Module libraries that are specific to certain modules.

Compiler and Builder
The builder uses a programming language’s specification to integrate all the files related to a project such that it results in an application or software. The builder uses standard compilers to create the build.

The compiler is then used to compile the program and it may generate errors and warnings.

Warnings do not prevent the program from executing but errors do not allow the program to run.

Running, debugging and Testing
A program can be run inside IntelliJ. The output or errors if any can be seen inside the IDE. the errors can be debugged with several features provided by the IDE for example the line by line execution of a program or by observing variables or other program related files.

Testing can also be performed within the IDE from the Test Runner Tab.

Features
Version 12.1 includes support for Java 8, UI designer for Android development, Play 2.0 and Scala. Some of the basic features of IntelliJ IDEA are as follows:

Navigating Basics
IntelliJ provides functionality to open recent files using Ctrl+E shortcut. Structure of the open file can be accessed by Ctrl+F12. Other navigation features include navigating between methods, navigation bar and select in. IntelliJ provides a task switcher between open files and tool windows.

Code Style and Formatting
IntelliJ provides following features for code styling and formatting:
 * Reformat existing code
 * Auto-indentation
 * Settings
 * Tab character

Refactoring
IntelliJ provides many automated code refactoring techniques to improve the code quality. Change variable type, invert Boolean and type migration features may affect the logic of code. Selection, undo, string fragment replacement and mnemonics are some of the other refactoring features provided by IntelliJ.

Debugger
IntelliJ allows to run a project in debugger mode once its run configuration has been set. Debugger provides various types of breakpoints such as field breakpoint, action breakpoint and temporary breakpoint. Debugger session has features like run to cursor, smart step into, mark instance and evaluate expression.

Application Server
IntelliJ ultimate edition provides inbuilt support for the enterprise application servers such as GlassFish, WebLogic, Tomcat and more. IntelliJ provides web facet for each application server where it stores settings for each module of the project. It also provides artifacts and run configurations for application servers.

Supported languages
IntelliJ IDEA has two editions; Community Edition (Free) and Ultimate Edition (Paid). Both can be used for commercial development.


 * Both editions
 * Java
 * Clojure (via separate plugin)
 * Dart (via separate plugin)
 * Go (via separate plugin)
 * Groovy
 * Haxe (via separate plugin)
 * Scala (via separate plugin)
 * XML/XSL
 * Kotlin (via separate plugin)
 * JavaFX


 * Ultimate Edition only
 * ActionScript/MXML
 * CoffeeScript
 * Haskell (via separate plugin)
 * HTML/XHTML/CSS


 * JavaScript
 * Jelastic (via separate plugin)
 * Lua (via separate plugin)
 * Node.js (via separate plugin)
 * PHP (via separate plugin)
 * Python
 * Ruby/JRuby
 * SQL
 * TypoScript (via separate plugin)

Technologies and frameworks
Ultimate Edition supports the following:
 * Ajax
 * Android
 * Django
 * EJB
 * FreeMarker
 * Google App Engine
 * Google Web Toolkit
 * Grails
 * Hibernate/JPA
 * Java ME MIDP/CLDC
 * JBoss Seam
 * JSF
 * JSP
 * OSGi
 * Play
 * Ruby on Rails
 * Spring
 * Struts 2
 * Struts
 * Tapestry
 * Velocity
 * Web services

Ultimate Edition also supports the application servers Geronimo, GlassFish, JBoss, Jetty, Tomcat, Weblogic, and WebSphere.

Software versioning and revision control
The two editions also differ in their support for software versioning and revision control systems.
 * Both editions
 * Ant
 * CVS
 * Git
 * GitHub
 * JUnit
 * Maven
 * Mercurial
 * SBT
 * Subversion
 * TestNG


 * Ultimate Edition
 * Team Foundation Server
 * ClearCase
 * Perforce
 * Visual SourceSafe

Free plugins also exist for the Atlassian IntelliJ Connector integrating JIRA, Bamboo, Crucible and FishEye.