Slides from a July 30th webinar on building tools for IntelliJ Platform:
* What is IntelliJ Platform?
* Who is it suited for?
* Why is it better than Eclipse and Netbeans platforms?
* How is it different from IntelliJ IDEA Community Edition?
* Is it possible to build a commercial product based on IntelliJ Platform?
* Plugins for IntelliJ IDEA Community Edition vs products based on IntelliJ Platform.
* What steps must be taken to create a product based on IntelliJ Platform?
* How you can contribute to IntelliJ Platform?
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
How to Build Developer Tools on Top of IntelliJ Platform
1. How to Build
Developer Tools on Top
of IntelliJ Platform
Dmitry Jemerov, CTO, JetBrains
Tuesday, July 30, 13
2. What is IntelliJ Platform
• Foundation of all IntelliJ-based IDEs
• Provides building blocks for developer tools
• Open-source,Apache 2 license
Tuesday, July 30, 13
4. IntelliJ IDEA
• Where it all began
• Started as monolithic IDE
• Refactored over the years to modularize
and introduce extension points
• For more history: Malmö, September 7,
http://www.jetbrains.com/jetbrainsday/
Tuesday, July 30, 13
5. "Small" IDEs
• PyCharm, RubyMine,WebStorm, PhpStorm,
AppCode, C++ IDE, <to be announced>
• Set of bundled plugins + UI customizations
• Same source tree as IntelliJ IDEA
Tuesday, July 30, 13
6. MPS
• Meta Programming System - IDE for
domain specific languages
• Uses IntelliJ IDEA's overall UI framework
• Replaces text editing and PSI-based features
with its own DSL framework
Tuesday, July 30, 13
7. Kotlin Compiler
• Same code for command-line compiler and
IDE features in plugin
• Uses low-level parsing/PSI framework and
Java PSI
• 7.6M distribution
Tuesday, July 30, 13
16. core
• Virtual file system, lexer, parser, PSI,
references
• Utilities: collections, concurrency etc.
• No UI
• No specific language support
Tuesday, July 30, 13
17. platform
• Action systen
• UI framework: toolwindows, dialogs etc.
• Text editor
• Diff
Tuesday, July 30, 13
18. lang
• Language-independent implementations of
core code insight features
• Highlighting, navigation, completion,
refactorings, code formatter and a whole
lot more
Tuesday, July 30, 13
19. Other Platform
Modules
• Local history
• Debugger framework
• Test runner framework
• VCS framework
Tuesday, July 30, 13
20. java-psi
• UI-less part of IntelliJ IDEA's Java support
• Parser, reference resolution, inspections
etc.
Tuesday, July 30, 13
21. xml
• Parsing, DTD/XML Schema/RelaxNG, etc.
• DOM framework for XML-based DSLs
• Recently separated into non-UI and UI
parts
Tuesday, July 30, 13
24. IntelliJ Platform vs
Eclipse/NetBeans RCP
• Not a general-purpose RCP
• Best for code-centric tools, a lot of stuff
comes for free
• Not necessarily best for graphics-intensive
tools
Tuesday, July 30, 13
25. Product Opportunities
• Language IDEs: Haskell, Go, Lua, D, Perl,
assembly,Verilog/VHDL
• Framework-specific IDEs
• Code analysis/exploration tools
• Game development?
• ERP?
Tuesday, July 30, 13
26. Plugin vs Product
• Start with plugin in any case
• Product lets you remove what you don't
need, change what you don't like
• Product gives you control over branding
• Both plugins and products can use
commercial license
Tuesday, July 30, 13
27. Product Licensing
• IntelliJ Platform is Apache 2 licensed, does
not restrict licensing of derivative products
• Talk to us if you need components only
available in IntelliJ IDEA Ultimate
Tuesday, July 30, 13
30. Product Plugin File
• <idea.platform.prefix>Plugin.xml
• For example, IdeaPlugin.xml for IDEA CE
• Same format as regular plugin.xml file
• Can include chunks of components from
platform
Tuesday, July 30, 13
32. Application Info File
• <idea.platform.prefix>ApplicationInfo.xml
• For example, IdeaApplicationInfo.xml for
IDEA CE
• Single entry point for all branding info
• Patched by build script to include build
number etc.
Tuesday, July 30, 13
34. Building the Product
• build/scripts/dist.gant
• IntelliJ project file built with JPS (JetBrains'
homegrown build system)
• Layout tasks used to build structure of
product distribution
• Layout has common and OS-specific
(Windows, Linux, Mac) parts
Tuesday, July 30, 13
37. Distribution Scripts
• Windows - NSIS installer, scripts currently
not open but likely will be
• Mac - DMG build script tied to our
environment, roll your own
• Linux - just a .tar.gz
Tuesday, July 30, 13
38. Server Infrastructure
• Exception reporting
• Automatic updates and patches
• Plugin repository
• Usage statistics
• All URLs in ApplicationInfo.xml
Tuesday, July 30, 13