Last week we published EAP of the upcoming IntelliJ IDEA 2017.1 that included initial support for async stacktraces. Today, along with a fresh EAP build, we’re happy to introduce another improvement aimed at making debugging asynchronous code easier: step into that supports lambda expressions executed on other threads:
Earlier this was only possible when you manually added a breakpoint directly at a lambda expression, but now you can just Smart Step Into to debug asynchronous code.
Another improvement available in this update is the reworked Git File History. It’s faster, can display the revisions graph, and even has a button to include changes from branches other than the current.
Last but not least: we’ve added a new option that allows you to drag and drop breakpoints to remove them. If you enable it, simply clicking a breakpoint, instead of removing it, will enable/disable it. This is very convenient because it saves you from accidentally removing a breakpoint and losing its parameters such as a condition.
This option is selected via Settings | Build, Execution, Deployment | Debugger | Drag a breakpoint to the editor area to remove it.
As always, your feedback is welcome here in the comments and in our issue tracker.
Following the reactive programming trend, our code is getting more asynchronous. Earlier Java 8 introduced CompletableFuture (adopted from Guava’s ListenableFuture). Akka, Ratpack, Reactor, RxJava, Vert.x and other libraries implement Reactive Streams, Scala offers Future, Kotlin is adding Coroutines, and finally, Java 9 is about to bring us the Flow. Well, reactive programming helps us build efficient applications, but boy are they difficult to write and debug.
New year, new style? This month we’re experimenting with a simpler format for JAM, so you can see at a glance the real titles of the articles being linked to. The upside is more links! More news! And you can see all the topics at a glance. The downside? Less witty banter from yours truly. Let us know in the comments whether you prefer the “usual” format or the new. As always, we will cover what’s new in the Java world and throw in other bits and pieces that seem interesting for developers.
In this week’s Git questions we take a look at a simple but rather important step when you’re working on a GitHub Open Source project – how do you get started?
Carrying on our series of Git Questions, this week Gary Hockin (PhpStorm Advocate) and I look at the question: how do I make sure my GitHub fork is up to date when the open source project it forked has moved on?
GitHub’s help does, of course, cover this question. But not everyone is comfortable working from the command line, and even those who are, sometimes prefer to use the IDE if they’re already working in it.
This video shows an answer to this question which uses Git’s fetch, pull and push from within IntelliJ IDEA.
We regularly get questions about how to achieve a particular thing – as developers there are parts of our workflow which trip us up, that our tools can help us with if we understand how. So we’ve decided to start answering these real world questions with videos showing what to do.
The first video features me, Trisha Gee (Developer Advocate for IntelliJ IDEA) and Gary Hockin (Developer Advocate for PhpStorm) answering the question “How do I switch branches without losing the code I was working on?”. Through frequent battles with Git I have learnt there’s always more than one way to do things, so in this video we present two different options. We’re also two advocates using two different IDEs, coding in two different languages – many challenges we face as developers aren’t unique to our language or tool.
We’re really interested in what you think of this more informal format – it’s more like a video podcast than a screencast. We’d also love to hear what questions or problems you’d like us to tackle in future videos.
Finally, the holidays are over and it’s time to get back to work. We hope you’ve already had a chance to try IntelliJ IDEA 2017.1 EAP. If not, there’s one more reason to do it now: a freshly published EAP build.
Along with the usual bugfixes it brings a handful of quite interesting novelties.
Happy New Year! I hope you had a fun/restful/productive (delete as appropriate) festive season, if applicable. January’s Annotated Monthly is a gentle introduction to 2017 with a summary of the state of Java and the community, and an overview of some of the key technology trends from 2016.