Every book is a source of wisdom and happiness. Every book about IntelliJ IDEA is also a source of productivity. Can you imagine how excited we were when we heard that Jarosław Krochmalski wrote his book on IntelliJ IDEA?
Now if you decide to give IntelliJ IDEA a try as a beginner Java developer or coming from another IDE, this book will be of great help!
We couldn’t miss this chance to talk with Jarosław and ask him a few questions about his book, IntelliJ IDEA, open source software, and of course Java. Enjoy reading!
Andrey: Your book says you started working with IntelliJ IDEA since its first release in 2001. As an IntelliJ IDEA user, could you tell us why you chose it and what it is that still makes IntelliJ IDEA your IDE of choice?
Andrey: What are your favorite IntellIJ IDEA features you can’t imagine your work without?
Jarosław: Usability and intelligence – this goes back to productivity. Almost all IDEs have the code completion features, but the way IntelliJ IDEA does that blows all of them out of the water. The code assistance which extends when you install the plugin for the language or framework of your choice is quite unique I think. I cannot imagine working without the refactoring tools. In IntelliJ IDEA, refactoring is available no matter what language you are developing in, and it just feels natural. Also the project structure and configuration; in the past, in earlier releases of IntelliJ IDEA, it wasn’t great, I must admit. But in the latest releases it improved greatly and is now perfect. You can import your project into the IDE no matter how twisted its structure is. The decision to treat Maven build files as a normal project files is a hit.
Andrey: How much time has it taken you to learn IntelliJ IDEA? Do you think learning tools is a big part of a developer’s trade?
Jarosław: Well, I still learn IntelliJ IDEA every day by just using it, so it’s tricky to measure. I cannot say that you sit in front of the computer just to learn how to use the IDE – you just do your job working on projects. In my opinion, IntelliJ IDEA is great for newcomers because of its gentle learning curve. You just have to know how the project structure works, have some plugins installed and you are all set. But the more you use it, the more features you learn. The “wow factor” increases over time. Of course, reading good books, blog posts, tutorials and looking at the cheat sheets helps a lot with discovering powerful productivity features. Once you learn the shortcuts and become a more advanced user, the productivity boost the IDE gives is so good that you’ll never look back.
Andrey: What other developer tools help you be more productive? Would you recommend any to other Java developers?
Andrey: All developers have their favorite frameworks (like all kids have their favorite toys ;-). As an experienced enterprise developer and consultant, what are your personal and professional preferences?
Jarosław: I’m a big fan of the Spring Framework, I use it for backend development like creating REST endpoints for example. The whole Spring family is growing and is now a complete package. In my personal projects I also use node.js together with Loopback for doing the backend. It’s fast and fun to work with. For the frontend, Angular.js with some nice Bootstrap template is my favorite choice. I’m a little bit concerned about the future of Angular.js and the whole 2.x development roadmap, but I think we should continue to work with the current version and just wait.
Andrey: In your opinion, how does the open-source concept influence and shape the enterprise software? Have you used any open-source projects in your professional career? Which ones do you like the most?
Andrey: You’ve been using Java since v1.3, and I believe you’ve seen most of its evolution. Do you like where it is right now? What do you think about its future?
Jarosław: A lot has changed since 1.3 in Java SE. Honestly, it makes me feel old! Now we have non-blocking IO, generics, great concurrency utilities, and – best of all – an insane amount of security and performance fixes. It’s a lot easier now to develop in Java. In the future, a lot of interesting things will probably be available, like better support for multi-gigabyte heaps or self-tuning JVM. The Money and Currency API will probably be introduced in version 9 – this interests me the most due to my profession. I cannot wait to see this!
When it comes to JEE, first of all, I think that the Adopt-A-JSR initiative is a great idea that gives people the chance to shape the future of enterprise Java. Certainly, it’s going in the right direction. Open source projects help a lot with the change, compare Spring and EJB 3.1 for example.
Andrey: What do you think makes Java unique as a language (or platform)?
Jarosław: It’s a portable, object-oriented, architecture-neutral, high-performance language, and it’s combined with a powerful and well-designed set of APIs. I enjoy programming in Java and usually I’m amazed at how quickly I can get results with it. I believe that switching to Java increases your efficiency. But the real power of Java is the choice of libraries and frameworks you can use. The JVM as a platform allows you to change the programming language if you like and still be able to run in on any machine.
Andrey: Have you tried Scala, Groovy, Kotlin or other JVM-based languages? Do you like the diversity of the Java language ecosystem? What are your thoughts on languages that have emerged recently?
Jarosław: The Java language is more than sufficient for my professional or personal purposes. I have tried some Groovy and Scala development and I liked it. I think that the diversity of the language ecosystem on JVM platform is a good thing – if you think that a specific JVM language can be more effective than just pure Java, you can pick what suits you best. I like the interoperability of the new languages with Java, so you can call Java code from Kotlin and vice-versa, for example. This makes the transform process easier with the existing projects. I have read a lot of interesting things about Kotlin and Ceylon and I know they have all the benefits of Java, plus more. I believe I will have a chance to use them in my work. For the time being, I will stick to Java.
Andrey: Please recommend two other books on development you enjoyed reading recently or just consider important.
Jarosław: I consider a lot of books to be important for me. Some all-time classics are Martin Fowler’s Refactoring, Uncle Bob’s Clean Code, Brian Goetz’s Java Concurrency in Practice, and Joshua Bloch’s Effective Java.
Recently I liked Pro AngularJS by Adam Freeman because I wanted to go deeper with Angular.js – I needed it for my project. This weighty tome presents a lot of useful information and examples of how to use Angular.js right. The book is well-written, easy to follow, and explores many of the topics that you will not find anywhere else.
I recently got my hands on Java Lambdas Pragmatic Functional Programming. It’s not very long and it introduces you to a much more functional style of programming. It presents the core of the new features of Java 8, like lambda expressions, streams, enhanced collections and Collectors or data parallelism. If you want to stay current, I think it’s a good read.
Andrey: Thank you for the interview!
About the Author