IntelliJ IDEA 2016.2.1 EAP updates Kotlin support to 1.0.3

Great news! IntelliJ IDEA 2016.2.1 is on the horizon. You’re welcome to give its first EAP build a try. In addition to the usual dose of bugfixes, this EAP build updates the bundled Kotlin plugin version to 1.0.3. Here’s a little more insight into what it brings you.

If you’ve ever pasted Java code into a Kotlin file, you’ve probably noticed that IntelliJ IDEA offers to automatically convert it to Kotlin. However, this used to work only if the code was copied from inside the IDE. Now it works no matter where you got the code, even if it is a StackOverflow page.

Code completion for Kotlin also got better. IntelliJ IDEA suggests non-imported members and adds an import statement automatically on selection. Smart Completion is available after by and in statements.

The Move Element Left/Right actions, which were added earlier for Java, now work for Kotlin.

And finally, the Kotlin Bytecode tool window now has a Decompile button.

For more details read the announcement in the Kotlin blog.

As always, we appreciate your feedback here in the comments as well as in our issue tracker.

Develop with Pleasure!

Posted in EAP Releases, New Features | Tagged , , , | 1 Comment

Live Webinar: What’s New in IntelliJ IDEA 2016.2

We hope you’ve already tried IntelliJ IDEA 2016.2 which we released earlier this week. Even if you haven’t, we’re offering a deeper insight into its new features Wednesday, July 27th, 12:00 PM – 1:00 PM EDT (New York) / 18:00 – 19:00 CEST (Berlin) (check other time zones) during a live webinar What’s New in IntelliJ IDEA 2016.2, featuring Trisha Gee.


In this webinar Trisha will give you an overview of the most important changes of 2016.2 and, of course, will answer your questions.

Register now!

Speaking to you

Trisha GeeTrisha has developed Java applications for a range of industries, including finance, manufacturing and non-profit, for companies of all sizes. She has expertise in Java high performance systems, is passionate about enabling developer productivity, and dabbles with Open Source development. You can follow her on Twitter – @trisha_gee

The Drive to Develop

Posted in Webinars | Tagged , | Leave a comment

Java Annotated Monthly – July: Java Tools and Technologies

Whether you like to branch out into other JVM languages, or prefer to get deep knowledge in “classic” Java, there’s always more to learn in our Java-flavoured world.  This issue aims to give you some summer holiday reading. But the most exciting news this month is a double-whammy: IntelliJ IDEA is the top IDE, according to the latest Developer Productivity Report, and we have a new version of IntelliJ IDEA!


Continue reading

Posted in News & Events | Tagged | 5 Comments

IntelliJ IDEA 2016.2 is Here!

The last four months passed quickly, yet they were very productive. Today we give you IntelliJ IDEA 2016.2, our second update in the series of this year’s releases. As usual, it brings both useful new features and important fixes. Read on to learn what kept us busy and download the update to try all of its new features without any further ado.


Continue reading

Posted in New Features, Releases | Tagged , | 87 Comments

IntelliJ IDEA 2016.2 RC is Out

Time flies! The IDE update planned for this summer is now a matter of days. Today’s good news is that we’ve published its first RC build. You’re very welcome to download it and give a thorough try to all of its new features.

We appreciate your feedback on bugs and other flaws you may find in the build. Report them without hesitation to our issue tracker.

Develop with Pleasure!

Posted in EAP Releases, Release Candidates | Tagged , | 2 Comments

IntelliJ IDEA 2016.2 EAP Adds Breadcrumb for Java

Fresh IntelliJ IEA 2016.2 EAP build is out and ready. Among the usual bugfixes it also brings something special: Breadcrumbs for Java code.

Until now breadcrumbs were only available in HTML and XML code, where they have proven to be super handy for tracking of the editing position as well as traversing the tag tree. Now breadcrumbs work for Java, too, where instead of tags they let you navigate through classes, lambda expressions and methods:

To enable this feature, go to SettingsEditor → General → Appearance and select Show breadcrumbs.

Your thoughts and impressions about this and any other changes are very welcome here in the comments, and, of course, in our issue tracker.

Develop with Pleasure!

Posted in EAP Releases, New Features | Tagged , | 18 Comments

Webinar Recording: Refactoring with IntelliJ IDEA

Last week we had two exciting events: IntelliJ IDEA 2016.2 Public Preview announcement, and a webinar in which Bill Wake gave a one-hour masterclass on refactoring with IntelliJ IDEA.

The preview is definitely worth a try, so please help yourself to it (don’t forget to share your feedback, of course.) As for the webinar, you’re welcome to watch its recording any time:

Sources of the original Gilded Rose application can be found on GitHub, as are sources of the same application after all the refactoring.

To learn more about refactoring code and IntelliJ IDEA, read this article on DZone, and of course, check out the IntelliJ IDEA official page, for there are links to articles and tutorials on this topic.

And finally, you may want to have a look at Code Katas, a free interactive exercise by Industrial Logic, our Training & Consulting Partner. This exercise lets you practice Test-Driven Development, refactoring, and other programming skills in Java. Katas not only checks your stats, but also provides you with personalized feedback as you progress through it.

About the presenter

Bill WakeBill is best known in the Agile community as the creator of the INVEST model for user stories and the Arrange-Act-Assert guideline for unit tests. He has been an author of several books on XP, refactoring and design patterns. You can follow him on Twitter @wwake

Develop with Pleasure!

Posted in Tips & Tricks, Webinars | Tagged | 3 Comments

IntelliJ IDEA 2016.2 Public Preview

We’re excited to announce that IntelliJ IDEA 2016.2, the next IDE update awaited this summer, is now available for public preview! To get all the details about its new features and to download the preview build, proceed to our website.

Here’s a list of most notable changes:

  • Debugger
    • The Watches and Variables views in the Debugger tool window have been merged together.
  • VCS
    • The Log viewer for Git and Mercurial got faster and now has a handy loading progress indicator.
    • Patches are much easier to apply, especially if the files have been changed since the patch was created.
    • Case-only renames now work well in Git for Windows and OS X.
  • User interface
    • The Editor supports monospaced fonts with ligatures: e.g. FiraCode, Hasklig, Monoid or PragmataPro.
    • Any image can be set as the background of the Editor and the IDE Frame.
  • Spring Frameworks
    • Support for the Spring 4.3 and Spring Security 4.0 features.
    • Coding assistance for the Cache Abstraction.
    • Improved performance (for projects with many XML files; and several simultaneously opened projects).
  • JavaScript
    • Intentions to convert code to ES6.
    • Better coding assistance for React.
    • Smarter support for TypeScript’s enum types.
  • Database Tools
    • Code completion is now more context-aware.
    • Code completion for column values inside the Table Editor.
    • Better PostgreSQL support.
  • Android
    • Android Studio 2.0 features (except Instant Run, not fully merged yet).
  • Other
    • The Windows installer bundles a custom JDK with fixes for focus and font rendering issues.

Give it a try

You’re very welcome to download the preview build and give all its new features a spin. If you do, please do share your impressions with us here in the comments or directly in our issue tracker.

Develop with Pleasure!



Posted in Beta Releases, New Features | Tagged , | 4 Comments

How to Support Case-only Rename in Git

As you may know in IntelliJ IDEA 2016.2 EAP we’ve finally fixed a very annoying issue that didn’t allow to commit case-only renames in IntelliJ IDEA. For a number of reasons, the solution was not so trivial, we decided to share some of its implementation details with you.

When you are on a case-sensitive file system (Linux), case-only renames are just like any other renames, so you’re all good. However, when the file system you’re using is case-insensitive (like Windows or Mac), some of many Git commands will treat changing the file name case as a change, while others won’t. Because of that, a seemingly simple rename of “” to “” makes you face errors you clearly don’t expect. The nature of these errors is in that Git status remains the same, but most of the Git commands will not work with the new name, because the index and the repository still contain the old name.

Turns out that there’s an easy fix for this: just use git mv --force to perform a case-only rename. This will make Git see this rename as a change, and will record it to the index. Of course, we’ve implemented it, and now when you rename a file from IntelliJ IDEA, it will use this command to actually perform it.

However, that is only the tip of an iceberg. I’m not going to mention several places when we relied on system case-sensitivity settings for file paths comparison, which didn’t allow to put two case-only-different paths into a HashSet, and so on. :) Just had to do some debugging for a while and fix all these places.

Things got really interesting when we tried to commit these rename changes, which were already properly recognized by Git. In Git CLI, as well as in most of the clients, you just call git commit and commit everything that is staged. However, in IntelliJ IDEA we call git commit --only -- <paths> which lets commit only selected files, regardless of whether they are staged or not. This allows you, the user, to select paths from the UI and not think about Git indexes. This approach has, of course, a certain downside, but we are working on improvements, and are going, for example, to provide experienced users with a way to manipulate the Git index in the upcoming releases.

The problem here is that Git doesn’t allow the --only syntax for case-only renames, so git commit --only simply fails. We could call git commit without options and commit everything what’s in the index, but what if you’d like to exclude some files from that commit? We had several options on how to deal with these cases, and we decided to stick to the following procedure:

  1. Check what is staged besides case-only renames.
  2. Reset staged changes which are not selected for commit.
  3. Stage what else is needed to be commited.
  4. Commit the staging area.
  5. Stage back the changes unstaged before commit.

If you’re an experienced Git user, you might have noticed that there is a highly improbable case when this procedure will cause an issue: if you have a case-only rename, and you have a file that you don’t want to commit together with this case-only rename, and this file is both partially staged, and partially not-staged, and this separation is important to you (e.g. contains different sorts of changes), then the procedure above will make all changes in the file staged. However, we felt that it is nearly impossible case, and decided not to handle it until we have a GUI for Git staging area and the >git add -p feature.

Please note that as it was described in the beginning of the article, if you rename a file outside of IntelliJ IDEA (via the Terminal or from Finder or Explorer app) without properly calling git mv -f, you’re still doomed. Sorry for that, but that’s because Git won’t see the change at all, and it is not clear how to overcome this problem in IntelliJ IDEA. We are open for suggestions, and would like to implement them if they won’t affect performance or usability in ordinary situations.

Hope you’ll find IntelliJ IDEA helpful enough when you face a case-only rename. If you find any issues with the described approach, please report here or to the tracker.

Posted in New Features | Tagged , | 9 Comments

Java Annotated Monthly – June 2016

Java: past, present and future – we’re still counting down to the release of Java 9, there are ever more resources for getting a handle on what Java 8 can offer us, and the Oracle vs Google court case is over (for now). The language is not the only thing that continues to evolve, well-used libraries like JUnit and Log4J are making the most of modern Java. But with all this change, we need to keep an eye on performance and correctness.


Continue reading

Posted in News & Events | Tagged | Leave a comment