Modules??? Libraries??? Whats going on? It all seems a little complex...
Hi
Perhaps I have missed some vital information along the way... what is going on with this library/module stuff??
Is there a faq I have missed on this?
Firstly, for some time now in Aurora, I dont like/understand the new Libraries config. It seems complicated and nowhere near as intuitive as Ariadna.
For example, can someone explain to me what the difference is between a Module library, a Project Library and an Application Library?
Where does the newbie (or non-newbie) quickly add a jar to the classpath. I dont see the word "CLASSPATH" anywhere - and IMO, that is a big -1 compared to Ariadna.
Not being forced to learn an IDE's concept of a "Project" is a big plus that I thought Ariadna got right - where all other IDE's like JBuilder etc had it very wrong.
Perhaps some labels need to change - or it needs to become a little more obvious what these things mean.
Now for the dumb question: What is a module?
-Nick
Please sign in to leave a comment.
A module is a distinct group of files that are part of a project - think
of it as a sub-project. Modules have their own settings such as
classpath, sourcepath and such. A module can be dependant upon other
modules.
As to why: In large projects (such as the one I work on) there are
distinct groups working on various pieces that fit together in complex
ways. Modules are GREAT for this.
Does it add alot of complexity that is unneeded by many people? YES, it
does, but this is a professional grade tool. It provides professional
grade features and sometimes features of that calibre are just more
complicated.
Application libraries are available to ALL Projects (so by extension all
modules).
Project libraries are available to all modules within that project.
Module libraries are ONLY AVAILABLE to that one module.
If a library is likely to be used in more than one project, put it in
the Application Libraries. Otherwise, for a one module project it won't
matter whether you add it as a project or module library.
Nick Minutello wrote:
While I understand the importance of these features for some projects, it seems that such projects would be in the minority. I wholeheartedly agree with the original poster in that one of the things that attracted me to Idea was the simplicity of things like setting up the project's classpath. Just like him, I felt jBuilder and most other IDE's got it wrong whereas Idea with it's simple, logical controls got it right.
Is there a happy medium? Can the complex (and often unnecessary) module based configuration be turned on by those people who need it while the rest of us utilize the wonderful simplicity of the Adriadna way?
-Matt
It is absolutely optionally to use modules, for simple projects it is possible to use the default module which is created automatically and not even displayed in the module configuration dialog, hiding all the complexity
Why the differentiation between projects and modules? Why can't there just be projects, and any project can be a sub-project to another project? Basically, just merge the definition of "module" and "project".
Vladimir Goncharov wrote:
Exactly. That is where we are trying to get.
One module = "no modules". You (almost) do not see it.
Friendly,
Dmitry
--
Dmitry Lomov
IntelliJ Labs / JetBrains Inc.
http://www.intellij.com
"Develop with pleasure!"
What I don't understand is the difference between a project library and a global library. Why is this distinction made?
Project libraries created per-project, and can be used by any module in the project. I have found no great use for them, but I suppose some might. Presumably if your workflow involves multiple developers sharing an ipr file, it could be handy. Global libraries are created once for your IDEA installation, and presumably stored in the IDEA configuation directory. They can be used by any module in any project. In practice, this means that if you set up junit.jar as a global library, you can add junit to a module simply by clicking a checkbox, and if you move junit.jar you only need to edit the global library once, at which point it works for all of your projects. This rules.
--Dave
Can I make a suggestion then? If a module is in fact a sub-project, can we call it a sub-project?
I guess that modules is not my main criticism - I see why that is needed - it just wasnt obvious what they were.
However, I dont at all get why we have such a bewildering array of Library options (global, project, etc etc).
I restate my criticism of not having the word "Classpath" anywhere. Any newby Java developer (and they LOVE Ariadna) will trip over this in the 1st 5 mins using Aurora...
As for libraries, I thought that Ariadna had it right - simple, intuitive and obviously optional. But the MAIN thing missing was/is that there was/is no way for teams to share libraries. Unless each developer named his/her library the same as their colleagues, then sharing ipr files was impractical.
-Nick
My bigger question was why the distinction is made. I don't see benefits to separating the two - I think everything should be a global library.
I think not saying "CLASSPATH" anywhere is a good thing. The concept of a library is a higher level one than that of the classpath, and I think it's important to not mention classpath. On the other hand, maybe "Classes" could be changed to "Class path" in the content tree.
|
|I think not saying "CLASSPATH" anywhere is a good thing.
|
Except for the simple little fact that the CLASSPATH is a fundamental aspect of Java!
I am quite happy that we have higher level concepts - I just think it is WRONG to force people to understand these and adapt to these before they can even START using the product.
I still believe that in this area, IntelliJ 3.0.x is miles ahead in SIMPLICITY and intuitiveness (is that a real word?).
Even if you had no clue what a library was in Ariadna, it took about 5 mins to work out that it was a simple layer over the top of classpath, sourcepath & docpath - because you could see each of these things.
I recommend IntelliJ to our developers. Some are moving away from VB/VC++ and think that IntelliJ is Amazing (I cant remark enough how much of a .net killer it is). But more than that, despite the impressive feature set it remains so simple and intuitive that even the most novice of Java developers can work it out.
I just despair a bit that Aurora is losing sight of the importance of simplicity.
-Nick
I think it's sort of funny that you think sourcepath, classpath, docpath are easier to understand than a library. NoClassDef errors confuse a lot of new users, from what I've seen, and those are almost always classpath issues. I think libraries are a lot simpler.
Keith Lea wrote:
Project library is saved in .ipr file, and so automatically shared inside
one project (and commited to CVS etc.) Paths in project libraries are saved
relative to .ipr file directory, so each developer does not need to resetup
his libraries.
Global libraries have to be configured in each IDEA installation separately.
Friendly,
Dmitry
--
Dmitry Lomov
IntelliJ Labs / JetBrains Inc.
http://www.intellij.com
"Develop with pleasure!"
Nick Minutello wrote:
1. Term sub-project is ugly IMO
2. Modules can actually be shared between project, what sub-projects
presumably cannot do
It is probably bewildering, but it is also very flexible. You can keep
libary definitions in:
1. .iml file - just add a module to a project and added module immediately
sees all of them - no additional configuration.
2. .ipr file - configure libaries once for your project and share them
between developers
3. IDEA config - configure libraries on per-IDEA-installation basis.
IMO its a shame that newbie Java developer needs to learn a
classpath notion :)
Anyway, any Java newbies out there? I am sure they have a right of their
opinion not being speculated about in their absence :)
Friendly,
Dmitry
--
Dmitry Lomov
IntelliJ Labs / JetBrains Inc.
http://www.intellij.com
"Develop with pleasure!"
>> those are almost always classpath issues
Are they classpath issues or library issues? ;)
You have just proved my point.
You have to understand the classpath and you cant completely hide it behind the notion of a library.
I think we both agree that libraries are a good thing - I think where we disagree is how much we try and "hide" the underlying concepts.
-Nick
Hi Dmitry,
Have you thought about some kind of shared library management - with central repository ala Maven?
This would be excellent in making sure all developers are using the same version etc - and avoid duplication of effort.
-Nick
|
|IMO its a shame that newbie Java developer needs to learn
|a classpath notion :)
|
I tend to agree. However, thats the way it is.. :(
|Anyway, any Java newbies out there? I am sure they have a
|right of their opinion not being speculated about in
|their absence :)
I spend some considerable time training them - so I consider myself reasonably well qualified to have an opinion on this :)
The fact that I see both newbie AND experienced people struggle with the current library arrangment is an indication, to me at least, that its not as intuitive as it could be.
Can we please have "classpath" back?
-Nick
Looking through the OpenAPI for the modules stuff, it looks as though the possibility was at least considered, as library locations are actually URLs, rather than simple file names. How well such a thing is currently supported I couldn't say. A project-level library pointing to remote jars on a central repository with IDEA managing the caching would be pretty sweet indeed.
(Didn't you kick off this thread by saying that the module/library system was too complicated?)
Dave Griffith wrote:
No, those ar Urls, that is internal VFS paths to files, prefixed by
location. They have mothing to do with Internet URLs, besides confusingly
similiar name.
Friendly,
Dmitry
--
Dmitry Lomov
IntelliJ Labs / JetBrains Inc.
http://www.intellij.com
"Develop with pleasure!"
Sadness. I'll put in a Tracker item for "remote" libraries, just so the idea doesn't fall through the cracks.
>> (Didn't you kick off this thread by saying that the
>> module/library system was too complicated?)
Yes. IMO, having sharable libraries would obviate the need for Project Libraries (or no?)
I think the concept of libraries is good, but, I keep repeating myself, it shouldnt hide the fundamental underlying concepts (like classpath)
Hello Nick,
I just wanted to insert that I agree with you. I really think the concept of libraries (project and global) could go away if modules could share the zip/jar files they contained.
The IntelliJ staff have responded they will consider this in a post 4.0 release but I think they need to get this right before releasing 4.0.
I hope others will agree and encourage them to do this work now and save us all a bunch of confusion later.
Tim
+1