Develop with Pleasure: The Next Big Thing 关注
Well, we're getting on toward release time for 7.0, and naturally thoughts turn to roadmap possibilities for the 8.0 release. Frankly, I'm a bit stumped. IDEA 7.0 adds support for Spring, Hibernate, Maven, TestNG, Ruby, Rails, Groovy, Grails, Web Services, and probably more stuff I'm forgetting. At this point, there are actually very few technologies I use daily which IDEA doesn't support, and support about as well as I'm able to envision. In the spirit of John Steelman's previous threads the little things that could be done to improve the IDEA, I figured I'd launch a thread to see what people think are the large functional areas missing from IDEA.
1) Suggestions must be something large enough to appear as a line item on the IDEA 8.0 roadmap.
2) Ideally, suggestions should be large enough that someone might consider driving a purchasing decision based on the decision. "Support technology X" works better if there's some indication of there actually being a market for technology X. Scala and AspectJ might be nice, and undoubtedly technologically exciting, but the user communities are currently pretty small.
3) Suggestions that performance/stability/memory usage should be the main focus of the next release belong in some other thread.
4) Most important, suggestions should be aid the goal "Develop with Pleasure", which is to say that they should be pitched toward aiding developers (as opposed to managers, QA, etc) with pleasurably performing the tasks they need to do to get their job done.
I'll start: Integrated task management, including adapters for all of the major issue tracking systems, Mylyn-like context management, clean integration with IDEA change lists, and probably some TeamCity extensions for release management. Mylyn (previously Mylar) is the only bit of Eclipse technology I've ever been jealous of. http://www.eclipse.org/mylyn/
Hm, I won't let you shut me up here ;)
If JetBrains would spent all the work towards 8.0 on bug fixes, performance, and usability, I'd be the first to type in my credit card details after release (well, to bother my boss to upgrade our licenses).
I can't help but dreaming of an Idea release that truly integrates all those current features so that
- no inspection ever gives a false warning
- all quick fixes work absolutely reliable
- all refactorings are waterproof, honoring Hibernate, Spring, Groovy, Seam, JSF, WebServices, ... and all the soft references defined that way.
- a gazillion other small improvements
I feel like Selena still isn't on equal grounds with the ancient version 4.0 in terms of usability and that's mostly because the sheer amount of supported technologies and the combinatorial complexities they bring with them.
To be fair, Selena has seen a great amount of smaller improvements and they are the main reason I could never go back to Demetra..
But still all in all a major release that simply is BETTER can even be considered as The Next Big Thing and JetBrains's marketing could really exploit the fact.
Err, that said, yeah something mylin-like would be great :-D
A not-so-big thing but anyway pretty useful could be weblogic 10 support: Idea 7 was supposed to support it, but it does not.
Weblogic integration in IDEA is ridiculous (launching an app server through its .cmd files is one of the lamest things an IDE can do, and a sure sign of half-assed integration done by a developer that didn't even bother reading the javadocs of the server), and BTW completely not working for us (we are not the only one that reported that deployment is completely broken, but every complaint in this direction gets unnoticed).
BTW the web site does not even mention compatibility with tomcat 6.
If I ever have $1.5M to spare, I promise to dedicate it to this project.
Support of Struts 2 !
More support for IBM Websphere / portal. You already do the basics so what I am talking about are the project starter wizards -- for example "build jsr 168 portlet" And also -- possibly some of the hot-deploy in to websphere techniques.
You could go to the Websphere conference and demo it. Probably pick up some big IBM shops..
RAD is currently the "best IDE" to support Websphere --- I thnk JB could expand their market if they gave IBM some competition in this space.
+1 for Struts 2 and Annotation support in Struts 2 and Spring 2.5
2) HTML / JSP / JSF Visual Editor. It doesn't need to be perfect. The ability to click a div and when switching to source code have it selected will already be a huge thing when editing big / not so pretty JSPs.
3) UML Tool complete with code generation, reverse engineering and synchronization between source code and diagrams. It should support at least class, package, use case and sequence diagrams.
4) More XML/XSD stuff - visual editor for XSDs, ability to generate DTD/XSD from a sample XML, XSLT Debugger
5) Speed improvements especially for parsing java classes, but also for hibernate support (which is currently quite unusable within a real application - with about 500 entities, tables and views)
6) Improved support for packaging configurations - e.g. currently I need to use an ant task for a J2EE application that includes an applet that needs signing. The ability to package as jar (and sign) a custom scope would be very cool.
If there's already a way to do this please let me know.
7) Compile on save like in eclipse (classes and JSPs; also when running under debugger hotswap classes and copy JSPs to exploded dir on save)
8) Instant error highlighting throughout the project, not only after a make / build.
If all of the above would be implemented IntelliJ would become a near perfect Java IDE. There would be little reason to choose another.
In terms of frameworks support you've pretty much covered everything I need. They can definitely be improved, but that will be done trough separate JIRA issues.
Alexander Strotzky wrote:
ability to generate DTD/XSD from a sample XML
This is possible in IDEA 7
IntelliJ Labs / JetBrains Inc.
"Develop with pleasure!"
I do a lot of work with swing, and I'd love to see some of the custom components you folks have written for IDEA appear as usable items on the Palette in the Form Designer, as well as any other good ones you could come up with.
Sory, I must have missed that.
I'm still salivating for the rest though.
That would be very cool, IntelliJ has some very useful custom components.
We don't have any plans of going into the business of distributing custom
Swing components. A significant part of IDEA's UI components is available
under the Apache 2 license as part of the OpenAPI sources, and you're welcome
to use those if you'd like to, but we don't think that investing into making
these components more usable outside of IDEA would pay off for us.
"Develop with Pleasure!"
I fully agree with you. But it would be a big improvement if those
components would be available for plugins. I could imagine that the
devkit plugin adds a separate palette containing all those handy
components every time a form contained inside a plugin module is opened.
Dmitry Jemerov wrote:
Fuhrer Engineering AG
The effort required to implement the infrastructure necessary for that significantly
extends the total effort required for all plugin developers to add all components
they need to their respective palettes. :)
"Develop with Pleasure!"
Adding the components once is indeed not a problem, but since the palette is project specific, it is
quite inconvenient to do the same again and again.
I really would like to see Flex support in IntelliJ. Using Flex Builder is a headache...
Yes, I also want to see a better Flex-Support.
Right now, auto-completion works fine on a basic level (via the MXML-DTD), but I could only compile MXML files using the mxmlc compiler as "External Tool" which is not very comfortable.
I was also unable to use the flex2ant-JAR (http://www.flex2ant.org) with the ant-integration in IDEA (maybe it's me, but I was unable to teach IDEA the custom task of the flex2ant-project).
Let's dream for a while...
1. Basic C support. Too bad it's out of the scope of IDEA. That's where all my pain is. Because no IDEA exists for C, I'm 10x-50x less productive in C... I'm not talking about advanced support, C++.. at least find function/navigate to function... from java as well.
There are projects that in addition to pure java have some native code to deal with.
2. Really advanced and intuitive VCS integration. Working with branches is a pain. I cannot switch to a branched version of a module - project model does not support that.
Merging is painful. Perhaps not painful, but still highly uncomfortable. If I don't merge something for a few months, I forget it.. looking at the IDEA dialog doesn't suggest much. I would like to have an integrated tool like p4v with "swimlanes" and graphs of changes. I want to understand what was happening in the branch -to see merges, changes. Now I can only make a diff.
Merging as dragging-and-dropping a change from one swimlane (=branch) to another. (not a feature of p4v)
3. Better project configuration.
In a project with lots of modules organized in a tree, one has to come up with unique module names. That's why my modules have strange names like modulegroup__modulesubgroup__modulesubsubgroup__module1. That's not a joke if you have 200+ modules. What about modules without java support, with no set up of JDK, sources , etc? (I keep docs and C sources in such modules)
I want to be able to colorize the console window. Meaning, I should be able to assign certain text or regular expressions to different colors and (if possible) fonts or font styles. This would be a HUGE feature for me. I've been dreaming about something like this for a very long time.
Additionally, I would like to be able to maximize the console window. Manually stretching it out every time I want a full view is extremely un-IDEA like and tedious because I have to do it frequently. This is one area where Eclipse is just hands-down better than IDEA.
Oh and I almost forgot...I would like to be able to route messages writtent to the console (via search string or regular expression just like the coloring) to different virtual consoles (which can be named however I like).
Message was edited by:
A feature that could drive purchasing decisions may be to attack the time wasted by developers in build-deploy cycles to heavy-weight containers.
For instance a deployment from IntelliJ to Glassfish V2 for debugging on a local machine takes a painful amount of time and effectively blocks intelliJ during the process.
If there's anything innovative you can do within IntelliJ to reduce time wasted in that cycle, such as embedding and pre-loading part of the container, or tricks to perform partial hot-deploys in environments that don't natively support them, I think you'd have a unique selling point that genuinely increases developer productivity further.
It may be valuable for JetBrains to investigate whether there's any JVM snapshot and restore technologies that could be integrated into Intellij.
ie. whilst debugging, allow a developer to take a snapshot (image) of the jvm state and be able to restore it to the same state at a later time.
Your could then add hot deployment of classes to snapshots and support unit test that load a test baseline from a snapshot.
A number of colleagues working with Weblogic Workshop (Eclipse-based Bea's IDE) assure me that reloading apps in their IDE is super-fast, due to a feature called "split development" that weblogic offers. It seems to be no more than a particular layout for exploded directories, so it may be easy to implement.
As there's a thread I'm really not keen on the cosmetic changes to the Run and Debug panels (see http://www.intellij.net/forums/thread.jspa?threadID=270869&tstart=0) The debug panel in particular seems half-baked - either make it dockable or not its useless for customisation in its current form and I preferred the old one. Not everybody has a huge monitor on their desk - its really very painful on a notebook.
I'd also quite like to be able to choose which plugins were enabled and disabled on a project basis. Well only certain kinds of plugins, one that offer vcs, app server, language support etc.. I suppose that impinges on performance/stability/memory usage issues, well thats one reason I might want to change the plugins. Short of this (no doubt dynamically hotswapping plugins isnt straightforward in a single JVM. The ability to define my own plugin profiles - giving each selection a name would be nice to have.
Agree with Mylyn and I hate being envious of any other IDE. Also like Matisse in Netbeans which'd be a popular choice for me, esp as MyEclispe managed it. Don't know what Jetbrains is doing with your gui builder - seems to be (ahem) languishing?
Also quite like the Netbeans ability to have separate classpaths for production and testing.. and the filtering of sources based on regexes, slightly niche but would've worked well for me a handful of times. I know the compiler options can ignore sources at the file level but I'd want it on a project/module basis. Often I want files still covered by vcs, but ignored by IDEA, the exclude folder seems clumsy in this respect. IDEAs vcs only works on folders it knows about. This tends to bite me on multi module projects where holes might appear and changes aren't picked up.
One thing I would like to have JetBrains do better is support of multiple displays.
With dual/triple display easy and cheap it is increasingly more important to be able to open the same views on different monitors.
My main gripe is only tool windows can be undocked and put on secondary displays. I want main editors!!!
I know that you can stretch the main frame across multiple windows.
This only works if you have a set of same physical displays (I often do external LCD + laptop = different resolutions and positioning). In addition it is too much work to align the vertical editor split right at the border of one screen since it changes all the time when side bar tool windows are opened.
When I'm debugging, sometimes I want to "step into" the getters and sometimes I don't. If I have a line like:
result = doThing(param1.getVal(),param2.getSmiles(),param3.getOtherThing())
then what I normally do is jump into doThing and hit ctrl-r to run to that line. It would be nice if I could assign a key to step into the method wil ignoring any method call which starts with "get".
Try 'smart step into' (Shift+F7).
Control of IntelliJ thread priority
I often find myself executing long-running tasks in IntelliJ such as executing/debugging a program, running a series of unit tests or deploying a webapp. Frequently these operations take 100% of the processor and effectively block other tasks in IntelliJ. It may be productive if IntelliJ included controls to reduce/increase the priority of long-running operations so the developer can resume concurrent work in the editor effectively.
Under Windows I tend to run IDEA with a lower priority so every process IDEA creates will inherit the same base priority. Changed my launch IDEA icon target to read:
C:\WINDOWS\system32\cmd.exe /c start "IntelliJ" /belownormal "C:\IntelliJ IDEA 7.0\bin\idea.exe"