What's the next big thing!!! 关注
There is a lot of chat about what should be in the next release. Every one is always ready to remind us how N Tracker items have yet to be addressed; how there is still some micro feature they really can't live without; or how there are all sorts of bugs that should be fixed before any new feature is implemented! And don't get me wrong I am one of those people quite often!
... BUT ...
What's going to be the next big thing! I mean back in the days of IntelliJ IDEA 1.x,2.x it was all about the refactoring revolution... and if I am not mistaken this is what brought most of us to IntelliJ. That, and closely related ideas like intentions/inspections which only can work if there is a powerful refactoring engine behind it.
So I ask you all: Forget anything that's in Tracker for a second... and tell me what's the next BIG thing you want in your favorite toolbox.
The hurdles I can see:
-More framework integration and tools: Do for vendor specific platforms like WS(and other J2EE), Hibernate, Velocity, XML, and others, what IDEA has done for POJ, ant, cvs etc. Which ones?
-Maybe help define a path for real Model Driven Development. I find at the moment all the tools out there are huge and require that you fully buy in to their approach. They have already started with such elements as the GUI plug-in, it seems.
-How about some support tools for design patterns. It seems to me that it would be great if there was an engine in IDEA similar to live template engines that could do multi class constructions based on templates and known/defined patterns.
these are just few ideas to get things stirring! It's even possible that these have been mentioned in tracker and forums...
I am just trying to start some conversation about big new features we need to take us further in the coming years. I am not even sure I like the things I put above... but they are worth discussion!
The next BIG thing is making the language more flexible, but I guess it
will be a separate product (MPS).
WHat do you mean? Make Java more flexible? I know IDEA does amazing things... but... :)
Exactly. Imagine, you could define something like "foreach" loops in
your new language (derived from Java 1.4) and "compile" it to Java 1.4
source code and compile it to class files...
If you have a lot of calculations to do, wouldn't it be nice to write it
like you would on paper?
Java 1.5 has a foreach (although it is simply called 'for' there). As to the other java enhancements, those should not be done in an IDE but in the language itself.
Jorrit Tyberghein wrote:
Read this to see what Thomas is talking about:
Gordon Tyler (Software Developer)
Quest Software <http://java.quest.com/>
260 King Street East, Toronto, Ontario M5A 4L5, Canada
Voice: (416) 933-5046 | Fax: (416) 933-5001
I know; it just was an example for a language modification, which might
simplify your task.
I'm talking about changing the language to better match your project's
needs, not a simple IDE-hack.
So Fabrique could be seen as the next big thing...
...But how long will MDA and code generation take to become an everyday tool. It's taken 8 years for Java to become a contending language and that's on the tail end of at least 20 years for OOA/OOP!
So I wonder if that really is the Next Big Thing! I have yet to look at Fabrique. But will it deliver that open ended solution. Don't get me wrong, if anyone can do it, it will be JB who gets it right.
The problem with all of the MDA/code generating apps out there is integration into existing enterprise infrastructure and culture! Many won't even consider something like the IDEA gui tool because of inlaid fears of generated code and proprietary code... let alone the job-safety that comes built in with complicated clunky frameworks! So I wonder what it will take for something like Fabrique to become the next big thing.
I'm sure, "code generation" will not be necessary any more (in the sense of
naive Java objects for persistence), because MPS can do it easily. To be
exactly, MPS is "code generation", it converts "your" language to one,
which can be compiled (e.g. Java).
Fabrique is only one tool, which is talked about in this article.
MPS is somewhat completely different.
I am a fan of code generation, but there are highly practical issues still in the way:
-Patching live environments.
-looking at source when dev apps are not available (ex:remote connection, sending code snippet in email for support or to share)
If all these get resolved than we are no longer talking of code generation... this will be a complete paradigm shift! Sort of like nobody worries about not having access to assembler or machine language version of their app when developing in C/C++/Java/etc.
This is no longer the Next Big Thing in Java. It's the Next Big Thing in Programming. I don't want to be a "Party-Pooper", but it will take time before this next generation is really upon us... then again I could be wrong!
> > As to the other java enhancements, those should not
> be done in an IDE but in the language itself.
> I'm talking about changing the language to better
> match your project's
> needs, not a simple IDE-hack.
I would like to suggest that we don't have to wait for the next big revolution of MPS or Intentional Programming or LOP(language Oriented Programming). They are to far away!
I think the approach that JB has taken in IDEA already paves the way. And maybe it could be argued that new features in IDEA should show how the concept of meta languages can work in an IDE.
One of the driving forces her is the DRY concept: Don't Repeat Yourself. Don't implement the same algorithm over and over; don't make changes in props, db, and code when you should only do it once; don't write business specs then technical specs then design then pseudo code then code when you might be able to generate code directly from the business specs(ok, i'm exaggerating!); and so on...
So before we get to this cool new big thing, maybe we could have some taste of it in IDEA. Most of the pieces needed are already there: code generation; instrumentation; meta language markup.
they are completely different I would say. Fabrique is only the latest tool in the MDA world.
MPS is a whole new concept! A whole new 3 letter Acronym: LOP (Language Oriented Programming)!
Nothing less than a paradigm shift which many are starting to talk about... similar in scale to the change OO created in Computer Science.
Sad, but true: There is no next big thing in the near future.
So it is more important than ever to fix/implement all those hundreds of 'micro features' you mentioned.
IMHO that's the only way to stay ahead of the competition:
Make Idea feel nicer on every single use case and make Idea feel more complete than other IDEs.
Come to think about it, even if there is no next Big Thing, there are still major features which might be very valuable, e.g. how about an integrated profiler? And yes, tool integrations would be cool.
Currently nobody is talking about NetBeans, but if 4.0 holds to its promises, it might shift the IDE market again.
There are indeed a couple of promising Bigh Things, but they will not make it into the mainstream for years - if at all.
Especially the cool new refactorings! :D
Ok I don't know if it's a big thing, but this is something I really
REALLY want to see in the next release : dockable toolwindows.
Florian Hehlen wrote:
I could definetly use that! It's not as big as the other stuff we have discussed up to now... but for me it's THE one BIG GUI feature missing in IDEA.
Exactly! Can't have Ant build AND structure window AND some plugin, at
the same time without hiding a part of my code, I mean what is that :)
Florian Hehlen wrote:
But there are buttons "float"/"fix" and "dock"/"undock" on the title bar of every tool window. Don't they do the job for you? If not, please, could you specify what exactly behaviour do you need.
Prague, Czech Republic,
"Develop with pleasure!"
>> I could definetly use that! It's not as big as the other stuff we
>> have discussed up to now... but for me it's THE one BIG GUI feature
>> missing in IDEA.
We plan that there will be close integration between IDEA and MPS (and it is implemented partially already), so you will be able to continue to write java projects in IDEA, but part of your Java code will be generated from code, written in MPS.
Prague, Czech Republic,
"Develop with pleasure!"
I would like to be able to dock windows into floating groups. I work with 2 monitors and float every window. The problem is that I do not have enough real estate for everything and spend significant amount of time moving these floating windows. I admit I could just close them and recover space. So for example I would group the Message and Find window together because I rarely use them at the same time, they serve similar functions (list of points in code I want to navigate to because of search or failed compile/ant task). I would quite often group run and debug together because they take up a lot of space and again I rarely use them at the same time. I have to plugins that take up almost always one entire monitor(SQL plugin and SimpleUML). I would group them together.
An other approach to this would be to be able to memorize multiple layout schemes for all the tool windows. This way I could toggle for example between code writing mode and debugging mode. Now here I am not talking about changing everything like in eclipse where features disappear from one view to an other!!! I am talking about simply memorizing the way windows are laid out.
Both feature would in fact be amazing! :)
cool! I can't wait!
2 Points though:
1- What I was saying though is that it seems to me that providing tight integration with tools like Velocity, AOP, and other such technologies will help get people using similar(although lesser technologies) and then when MPS reaches maturity so will they be wanting it. The other aspect of this is time. Also, I have little time to learn and integrate new technologies at work. And I can very easily say that IDEA made it possible for me to quickly learn and, more importantly, integrate into my work flow refactoring, Ant, XML, and unit testing.
2- Having MPS integrate with IDEA is quite essential as part of selling the idea to management. In general I have found that managers and other developers accept new technologies if they at least at an entry level can be accessed through known/trusted channels. This happened with the IDEA GUI plugin where people insisted on having access to the code, for example. It's not that individuals that use plugin don't trust it, it's that people are afraid when all that gets checked into source control is an xml file! I have seen this in the past with RMI stubs even. Where the some developers/managers were somehow reassured by the presence of rmi stub source in source control. I think it will be the same with something like MPS during it's adoption phase. There will be a need to see POJ source even if it's all generated.
Also I would like IDEA to pay more attention to the web developemnt and
will some features of MPS be already available in the next major release of IDEA?
Built-in Subversion integration would be very nice. There seem to have been a few attempts to provide it by third-parties, but none of them seem to be really actively developed and on a par with IDEA's built-in CVS integration. Worse, they don't seem to keep pace with IDEA's evolution -- or Subversion's! Subversion would appear to be gaining a lot of mindshare (whilst for historical reasons CVS will probably remain very popular for a while yet).
Subversion is so much nicer than CVS, and is a logical upgrade path (I know there are other version control systems out there...). Given that it's got a Java API, it shouldn't be too tricky to build into IDEA, or you could alternatively integrate it using WebDAV (Jakarta Slide?) for full cross-platform compatibility.
Using another Subversion client (e.g.: command line or TortoiseSVN) isn't really pratical as soon as you start some refactoring operation...
This is what I want :
The windows would be "docked together", so for example if I resize the
width of the Structure window, it would resize the whole pane (the other
windows in the same pane). If I resize its height, it will resize the
Ant build window (or the Recent Files window, depending on by witch edge
I resize it).
So, whereas I agree it's possible to do that currently, it is not
convenient, because either you float your windows, and then you hide a
part of another window, either you can dock one (well actually 4 : one
for each edge), but not several.
Also, currently you can only do that (warning: ascii-art follows):
but not that:
(or other combinations) which I think would be useful, too.
Well I hope I've been clear, since it's not easy to talk about UI
without a working example :) But I think you can see what I mean by
looking at microsoft development tools, they have docking tool-windows
which do what I mean.
Sergey Dmitriev (JetBrains) wrote:
In article <726435.1093511261239.JavaMail.firstname.lastname@example.org>,
Christopher Brown <email@example.com> wrote:
Agreed on all counts.
One of my clients just started the test project to determine whether
subversion is going to be their new VCS. The test starts in three weeks
with the release of Subversion 1.1, and will terminate within a month
after that. If they green light it, they will be entirely moved to
Subversion by the end of October. It would be really cool if those of
us using IDEA were able to participate with the test, and with the final
result. Finder context menus work, but integrating the refactoring with
the repository management is really, really cool.
I am breaking my head what this MPS looks like.
Is it some kind of XML or some strange syntaxed another language?
I downloaded some old version of MPS created by JB. Wasn't able to understand a piece of it :(
Is it some what like JSE (Java Syntax Extender)?
Is it another way of writing interpreters than using Lex/Yacc?
Please shed some light, if possible with your imaginative examples.
Thanks in advance
The "compare with version" feature in IDEA 4.x is just brilliant for CVS. Subversion support for me needs to be able to handle refactoring, and would ideally have the sort of graphical line-by-line diff-and-merge that I've just mentioned.
The Java API for Subversion is already there, shouldn't be too hard to link up IDEA's AbstractVCS with it...
We're moving from CVS to subversion but we're having numerous problems with subversion. We have a 3.0 Gig machine 1/2 gig ram (on linux redhat 3) and it is bad. We increased it memory to 2 gig and it is better but is still choking on large commits. I've been waiting on a commit for the last 40 minutes on 10 jar files...
3.0 gb? Is that correct? Sounds EXTREMELY small. What's powering that
machine? A hamster?
Sun Certified Java Programmer
>We're moving from CVS to subversion but we're having numerous problems with subversion. We have a 3.0 Gig machine 1/2 gig ram (on linux redhat 3) and it is bad. We increased it memory to 2 gig and it is better but is still choking on large commits. I've been waiting on a commit for the last 40 minutes on 10 jar files...