280 likes | 494 Views
IDE Bake Off IntelliJ IDEA 3.0. Austin Java Users Group Razvan Surdulescu March 25, 2003. IDEA Overview. IDEA is ~1.5 years old. Current version is 3.x. IDEA’s primary strength is refactoring : Rename/move/copy classes/methods/packages Extract field/method Many others …
E N D
IDE Bake OffIntelliJ IDEA 3.0 Austin Java Users Group Razvan Surdulescu March 25, 2003
IDEA Overview • IDEA is ~1.5 years old. Current version is 3.x. • IDEA’s primary strength is refactoring: • Rename/move/copy classes/methods/packages • Extract field/method • Many others … • Excellent (and unobtrusive) “assistance”: • parses the current source file • provides hints, underlines errors, etc.
IDEA Overview cont’d • Many useful plug-ins written by the developer community • Not free: $499 (.com), $99 (.edu) • Swing application • Startup time: TogetherJ < IDEA < Eclipse • Memory footprint: ~100MB when “warm” • Processor: PIII equivalent or better
Bake Off Environment • Windows 2000 SP3 • Sun J2SE 1.3.1_06 • IntelliJ IDEA 3.0.2 • ANT 1.5.1 (built-in to IDEA) • JUnit 3.8.1 (built-in to IDEA) • CVS 1.11.2 • Tomcat 4.0.6 • Electric XML 6.0.3
1a. Projects • Setup new project • You can change the “default project” properties • You can use an existing source tree or create a new one. • IDEA stores all project settings in a.IPR and .IWS file: very clean and unobtrusive.
1b. Projects • Changing the default editor • Not possible, although you can obviously edit the source files outside IDEA • The editor is very powerful and configurable: • Auto-complete, auto-indent, auto-import • Class templates, code templates • Many others …
1c. Projects • Configuring the class path • Add/remove JAR/ZIP/directories to the class path. • All class path “elements” become candidates for auto-complete, code navigation, etc. • You can setup “libraries”: • Define associated classpath, JavaDoc, and source directory • Use the library for compilation, documentation or source code navigation • Share libraries across projects
2a. Integration • ANT 1.5.1 comes packaged with IDEA • You can add an existing build.xml to your project • IDEA will allow you to execute, filter and log ANT targets through the GUI • In case of error, you can double click on the error line and go to the code that caused it • IDEA can validate the ANT build file (find mistakes, unreferenced variables, etc.)
2b. Integration • JUnit 3.8.1 comes packaged with IDEA • You can setup JUnit test targets and execute them • In case of failure, you can double-click on the error line and go to the assertion that failed
2c. Integration • CVS • IDEA comes with support for CVS and Star Team • If your sources are imported into CVS, you can do all CVS operations directly from the GUI • If you rename or delete a source file, IDEA will prompt you to keep the CVS repository in sync • IDEA comes with a nice visual diff tool, but you can use an external diff tool as well
3. Refactoring • IDEA’s refactoring is exceptional: • Rename/move package • Rename/move/copy/delete class • Rename/move/copy/delete method • Rename/move/copy/delete field • Extract method • Change method signature • Many others
3. Refactoring cont’d • Once I started refactoring in IDEA, I could never go back to another IDE!
4. Debugging • Local • Full-featured debugger: • Code breakpoints (normal, conditional, counted) • Exception breakpoints • Thread, field inspector, watches • Remote • Connect to a remote JVM via JPDA • Source path permits source breakpoints and navigation while debugging
5. Time Savers • Code navigation • Go to class/file (ctrl+(shift)+N) • Go to type/variable declaration (ctrl+(shift)+B) • Go to override • Go to JavaDoc (ctrl+Q) • Class structure (ctrl+H, ctrl+F12) • Code format, layout (optimize imports) • Standardized formatting => easy diffs • Refactoring (rename, move, delete, etc.)
5. Time Savers cont’d • Search (usages, text in file, text in path) • Code generation • Live templates (“psf-TAB”, “soutv-TAB”) • Implement methods (interface) • Generate getX()/setX() accessors • Generate equals()/hashCode() • Surround with • Smart complete
5. Time Savers cont’d • Logical layout • Almost everything can be done without the mouse • Key combinations and menus are very logical • Configurable key bindings (e.g. Emacs, Visual J++, …) • Able to save multiple code styles, and use them per-project. • Really useful if you have multiple teams with different coding standards.
5. Time Savers cont’d • XML support • Text format • Auto-complete • DTD, XML Schema validation • Validation of XML references/external resources
5. Time Savers cont’d • CVS Integration (operations, parse output) • JUnit, ANT integration (parse output) • Easy debugging (break points, source path) • JAVAC launched in process (fast) • Inspect code (critique) • Many useful plug-ins written by the community (Plug-in Manager)
6. Visual Modeling • No built-in features • SimpleUML plug-in covers the basics
7. Build a GUI • No built-in features
8. Build/deploy a JSP • Strong JSP and Tomcat 4.x support • Java syntax checking, code completion, and refactoring in scriptlets • Integrated JSP and Servlet debugging • Web application file management • Pre-deployment JSP compilation checks • JSP tag completion and syntax checking, including custom tag libraries
8. Build/deploy a JSP cont’d • No support for packaging WAR • IDEA expects un-expanded WAR-like directory structure • Easy to package this directory structure from ANT (using the <war …> task)
9. Deploy an EJB • Nominal support for creating new EJBs • Automatic management of deployment descriptor • Easy to add/delete EJBs • Easy to setup Entity CMP relationships • Functionality is still somewhat buggy/hokey • No support for packaging/deploying EJBs • This is always container specific anyway
10a. Customization/Extension • Installing/using plug-ins • Copy the .JAR file to /{idea_home}/plugins • Start IDEA • The plug-in “Plug-In Manager” allows you to see what plug-ins exist, download and install them directly from the GUI
10b. Customization/Extension • Writing a plug-in • IntelliJ Plug-in Documentation • Plug-in FAQ • Two kinds of plug-ins: application-level (created and initialized at start-up) and project-level (created for every project) • The plug-in configuration is provided in {plug-in JAR}/META-INF/plugin.xml
10b. Customization/Extension cont’d <idea-plugin> <name>VssIntegration</name> <description>Vss integration plug-In</description> <version>1.0</version> <vendor>Foo Inc.</vendor> <idea-version min=”3.0” max=”3.1”/> <application-components> <component> <interface-class>com.foo.Component1Interface</interface-class> <implementation-class>com.foo.Component1Impl</implementation-class> </component> </application-components> <project-components> <component> <interface-class>com.foo.Component2</interface-class> </component> </project-components> </idea-plugin>