We heard of IDEA getting full support for Vaadin earlier this month. Dmitry Zhuravlev published version 1.4.0 of his Vaadin plugin for IntelliJ IDEA. The easiest way to get the plugin is via the Plugin Manager: press "Browse repositories…" and search for "Vaadin". Then right click on the "Vaadin Support" entry and choose "download and install".
We decided we simply need to get hold of Dmitry and ask some questions about himself. Luckily, he was happy to speak with us, so I interviewed him via email. Here's what he had to say about things:
Hi! So, let's start by having you introduced; who are you, what's your current occupation and what's your history with Java?
Hi! My name is Dmitry. I'm a Java developer in St.Petersburg, Russia, and I have a masters degree in Software engineering. I have 5 years of experience with Java. I also have some experience in other languages, but Java interests me the most. I have worked with and tried most of the popular frameworks and technologies from the Java world.
I hear people saying that IntelliJ IDEA is the best IDE there is. For us that have grown used to and simply stuck with Eclipse, what do you think makes IDEA a great IDE for Java development?
I think Eclipse is a good choice because it's free and open source, it has a great plugin community, and OSGi is interesting and mature for RCP applications.
But OSGi is also a drawback, as the main keyword here is "platform". Eclipse is a good platform, but this comes with some usability problems when all you want is a helpful IDE, as everything is split into too many plugin pieces. For example, code refactoring and code completion are plugins in Eclipse, and can't match the usability in it being built-in in IDEA. IDEA was the first IDE with refactoring, and has been able to get a head start in its development, compared to the other IDEs.The main goal of IDEA is that you don't have to manage a mass of individual plugins, and you can just concentrate on your work. When using IDEAs plugins, I have rarely opened a help page, or searched the web for usage help.
The downsides for IDEA are that IDEA's plugin community isn't as mature as Eclipse's, and this is thanks to the fact that most of the plugins are created by JetBrains themselves. Also, even though IDEA's plugin API is open source, there aren't that many examples to learn from.
What's your story with Vaadin? How did you hear about it, and why have you liked Vaadin so much that you decided to write the Vaadin IDEA plug-in?
I love to study new frameworks and technologies. All of the J2EE ones claim to be the perfect fit for you. But in the end all of them are only variations of each other. But, then I found Vaadin, and it was exactly that I have been looking for a long time.
I like the Apache 2.0 license and that it's built on top of GWT, but without the separation of client and server classes. The Vaadin application model is similar to Swing. This makes developing web application easy and clear to the developer. Vaadin's Directory is nice and unique, allowing users write their own components and sell them (or make open source).
But then I found out that there is no Vaadin support in IDEA. Development in Vaadin was fine without specific support, but if I wanted to build a new widget, I needed to use an Ant script or Maven plugin for widgetset compilation – that is not the right way.
So I decided to write a plugin. I downloaded the Vaadin plugin for Eclipse, and then I continued to port the features to IDEA, but in the IDEA way. And now you can see what came of it :)
What main features does your plug-in have? What notable features does it not yet have, compared to the Eclipse plug-in?
The main features are:
- Widgetset compilation
- Add new theme action
- Generate Vaadin application from template
- Generate widget, widgetset, composite from template
- Building Vaadin addon package with the right manifest headers, ready to deploy to Vaadin Directory.
- Integration with Vaadin Designer application.
These features are the same you can find in Vaadin plugin for Eclipse. There are some other minor features, like support of old Vaadin widgetsets and support Liferay that are found only in Eclipse. But I now think that there should not be any problems to implement they, if they are really needed.
What's the next thing you are going to do for the plug-in?
The major things that need to be done is a help guide. It might be a tutorial with screenshots and showcases on how it should be properly used. I think Vaadin 7 also needs to be supported correctly as soon as it becomes more mature. Some things that I mentioned in the earlier question could also be implemented.
Do you need or even accept help with developing the plug-in? If so, how can people help you the best?
The best help to me is any feedback and bugs reports from plugin users. I want to say big thanks to all of them! And additional thanks to the JetBrains team for helping me with some questions related to the plugin development.
How can people find more information about the IDEA plug-in, how to use it and so-on?
I hope that I'll publish some documentation in the Vaadin wiki. It might be short at first.
As a bonus question: If there's one thing in Vaadin that you would like to change, what would it be, and how would you change it?
I think there is a lot of things that needs to be implemented in the future. This is not Vaadin related at all :) I think Vaadin needs to do some big collections of widgets, maybe packaged in additional libraries, like GWT does. GWT has several widget libraries like Smart GWT, EXT-GWT and similar, that in most cases turn users from Vaadin to GWT. The last but not the least thing is performance. There is a debate on some forums that some GWT libraries perform better than Vaadin. I think it is subjective. I can't find real performance tests to compare. I think you should make some tests with others web frameworks and refute this.
The floor is now yours: do you have any closing words for our blog readers?
Again, I want to say thanks to everyone who has given feedback about the plugin. Also I want to say thanks to the Vaadin team that has made this great framework and I wish you more success and more users with subsequent realeases!
Thanks for this interview, and especially thank you for your great plug-in!
Thanks to you, and these interesting questions!