 All right, thank you for joining this talk. This is about the Eclipse IDE. And in case you didn't know, it's a Java development environment, it's about the desktop version. There are now different projects running around in Eclipse. But this is the desktop version. My name is Lars Vogel. Just for me to know my audience, who here is using Eclipse? OK, who here is using NetBeans? OK, and who's using IntelliJ? All right. So there seem to be some overlap about the group. From what I've seen, the largest group, and that is also what I see with our customers is using Eclipse, which is good. Then the smallest group is using NetBeans. And there is this in-between group using IntelliJ. We would like you to enjoy Eclipse even more. So that's why we work on this. Again, my name is Lars Vogel. I'm one of the developers. I'm also helping with some lead decisions. And my co-founder of a little company based in Germany, Hamburg. And we also do stuff for money. It's our own. We try also to do this. I gave a similar talk last year, what we were planning last year. And last year I already said, I talk about the foundation. We have the top level project called Eclipse, which was the first project within the Eclipse foundation. And it is responsible for delivering the Eclipse IDE as a desktop version. And this is basically the Eclipse project I'm talking about, which includes the Java tooling, the plug-in development environment tooling, but also the foundation, like the UI toolkit, and so on. And on top of this, you also have a lot of other stuff, like Gradle, Maven, and so on. I'm not currently explicitly here. We hope that if we do something correctly, they benefit from it. But if you have later questions to these tools, I can try also to answer them. So I think the journey with Eclipse, the new journey with Eclipse started in the 4.2 release, which was a bad release. It was a bad sense of performance and stability. So over the years, and we have every release of Eclipse, we try to improve this. The latest official release is 4.6, and it is pretty stable, I think. It's also very fast compared to older, let's say, compared to 4.2, which was not very difficult. And this talk explicitly is about the release, which we're working at the moment on, and that you will receive in the second last week of June. Eclipse is very famous for delivering on time. So the project schedule knows already the release date in which the Eclipse IDE is being released, and I forgot this date, but it's usually around my birthday. So I remember, it's 22nd between 27, that's where we release, and I'm usually in vacation when we release. So what do we do here? I typically have two parts of this presentation. One is the part where the average Eclipse IDE users is maybe not interested in. That is more political background, what are we doing, maybe to prepare things, and then I have maybe things which you like to see in the IDE. I start with the potentially boring things so that you can stay here and expect something to learn what you may enjoy in six months or five months. All right, so this is the leadership committee, or like we call it, PMC, and the big news is we have a new member, and they're really nice with Sergey from Google joint, our team, so the team which traditionally was occupied mainly by IBM employees is now a little bit more divert. We have Ratat here, we have an independent worker, we have our little company, we still have two IBM people also Google, and we are working together on improving the Eclipse IDE. And I think it's a really nice mixture for us because maybe it's not fair to say, but I think the primary focus of certain companies is different. We have IBM, for example, which I think is fair to say that they care about stability because they have a lot of projects on it. When we have Ratat, and of course they have a lot of tools based on Eclipse, and maybe correct me if I'm wrong, but I would like to make it easier to extend the Eclipse IDE, I would like to make it easier to use and attract more users. We have companies like Google, which primary focus is maybe performance and stability. As far as I know, Google has big workspaces with 50 million classes in their workspace, and certain operations which are fast enough for us as average users are very slow if you have 50 million classes in your workspaces. So we're working on these things to improve this, and then we have our little company which focus on code cleanup and maybe using the framework more for Eclipse-riched line platform. So we have this nice mixture. We have also more or less stable contribution workflow. Some people move out, some people move in, and yeah, it's really nice to see this. Under the hood, we're still doing a lot of cleanup work. We migrated Eclipse last year to require Java 1.8 or Java 8, and we're still in the process of moving our internal code bases to Java 8. We're cleaning up, we're deleting outdated stuff and so on, so for the user, really boring, but we hope that if we do this cleanup work that other people can then do maybe amazing other work on top of this, or maybe it's attractive for people like you interested in software development, saying, oh, this is a cool code base, and it really looks modern and I'm using it and maybe I can improve that. Just for example, we had recently someone showing up and said, hey, wouldn't it be cool if we take the user interface toolkit of Eclipse for Linux and cross-compile it to Windows so that I have all the advantages, like free, complete styling, also in the Windows platform. And we were surprised that he showed up and we asked him, why are you doing this? And his literal answer was, I thought it was fun. And that is what we would like to have it. The code base is so cool, so nice, so clean, that people just like to work on it and have fun with it. Okay, that is the internal stuff. There are a lot of user-facing things in Eclipse 4.7 and again ask me if I forget something. I picked the ones I like most. We also have note and note-worthy documents for every milestone release. We give you also the nitty-itty things we do, but these are the biggest highlights, I think. And one of the biggest things we did at the beginning of the release was reworking the background API, which we have in Eclipse. It was okay before, good enough before, but if you didn't do the correct thing with it, you could slow it down. So for example, if you would develop something for Eclipse and you would try to give very good feedback to your user what you're doing, you would have maybe increased the runtime of this background operation by 200, 300% because the update of the label for the user was taking so long. So now if you detect such a thing that someone tries to, I'm processing unit one, two, three, four, every milliseconds, we collect this, we wait, I think at the moment, 200 milliseconds, and then we update the label after 200 milliseconds, hopefully fast enough for the user to be happy, but we are not slowing down the jobs. And we also have developed new API so that every Eclipse developer, if he or she uses this, then the job is cancelable by default. So he doesn't have to put in some checks in his code if monitor is canceled on some, we basically do it automatically. And we hope we see a lot of Eclipse functionality which reacts to the red button if you press it. I'm not sure if you have ever pressed the red button in Eclipse, and it was still continuing until the end and then cancel. So we hope with this new API, other people will benefit from it. We also enable background operations by default. This was a very tiny code change, but political a little bit difficult to adjust. It was actually me doing this because I'm also using Android Studio for development for my customers. And I think Android Studio has a lot of pop-ups, and I dislike pop-ups. So I was working, I think, two weeks with this customer and all these Android pop-ups. I'm now doing this and I'll do this. It was really annoying and I started Eclipse like two weeks later. Finally an IDE I like. And it gave me a pop-up. This something it could run in background. So we changed this. So you will not see this pop-up anymore by default. You can enable it if you like it. So doing now something I could also do in background and if you want, I will do it forever. And people not always clicking this. So this should give you a better experience if they're just blocking pop-ups avoided here. We removed a lot of deadlock possibilities in Eclipse and also a lot of code which can run slow. Especially now that we have a lot of feedback from the internal usage of Google within the Googleplex where they roll out their own version. We see interesting scenarios. They're just things are holding up each other. And I think we have removed most of it. Just as an anecdote, I wrote this slide yesterday and while I wrote this slide, I had a deadlock in Eclipse and it was the first deadlock I had, I think, in six months. We already have identified the cost for it but so we should have soon almost no deadlocks anymore for this. We also enabled the 4.x programming model dependency injection also for 3.x API. So if you, an Eclipse developer, you can take advantage of ad-inject in the Eclipse code instead of going or using factory methods or static things. And we also hope that you as a user benefit from this better programming model because we can produce better code for you. We also in the process of lambda-fying our API. So Java 8 came up and of course it has this nice functional interface where if you have only one method in an interface, then you can use lambda expressions. Fortunately for us, most or lots of interfaces in Eclipse were already functional interfaces with only one method. Some were not. And so we basically building new helper methods which you can use then and basically wraps and enables you to also use lambda expressions also in the hope that our code is reduced and maybe people start contributing more. We have also done some improvements in our theming. I'm not sure if you can see this, but I'm using a regular Linux on my machine. So a few months ago I was forced to use Windows with a customer and I noticed that we have this horrible styling here in Windows and that's basically just CSS change. I'm not sure actually if you care. Some people care, but so it was also a few lines to make it more consistent. And then I think last year I met Mario and he told me he left Eclipse because there was a dark pop-up on the Linux. So if you're a Linux user and you see the Java doc thing popping up, it is black. And I think it annoys you so much that you left for IntelliJ. Now you can migrate back after June. After June. Oh yeah, we need to download it. We forgot. We forgot. So he told me and actually someone else from Reddit developed it and so on. So we did this. We're also trying to improve our dark theme as much as possible. All the cool kids are using dark themes these days. And there's a lot of stuff which is just not styleable or not just not styled and I just put two things on it. We're replacing more icons with real alpha channels so that they don't look bad on a dark theme and so on. We also have implemented, some are from Hamburg actually, implemented styleable button backgrounds. So on Windows, the next release, it will look much nicer in the dark theme. The native Windows buttons which we use in SWT are not styleable by default. So it's now a software drawn button and again here, some Java doc differences. Yeah, so it should be in general, a little bit just more friendly for you to use from the eye-catching things. Of course, the IBM team works on JUnit 5 and Java 9 support, very big topic but I think the result will be supported. There's already a feature patch available. So if you want to use Java 9, today with Eclipse you have to install something and then you can use this. I think it has some legal issues why we do this. So that is very nice that it's coming. We also have a new Google index which is three times faster. It's basically Google notice with 50 million classes that certain operations like open the type hierarchy or just navigating through control click on a class goes through an index which is not optimal designed and implemented. And so they started working on this one and a half years ago. Caching it completely different with an approach they have borrowed from the C tooling. And it is already implemented and partially also used, not completely in all things. And it should make your Java things much faster. And I always was an assumption that it will be three times faster unless until I met Stefan Zenos who did this implementation and he told me no last. It's not three times faster. It's a magnitude of three times faster which is more impressive I think. So average Java operation which using this index will be significantly faster. And he told me that is actually a worst case scenario. So it is already included. We're building eclipse every day. So if you go to the download page of Eclipse and if you don't know you can ask me where to find it you can download the integration build and I think since a week it is integrated and should improve your interactive performance significantly if you have very large work spaces. So if you're sitting here and thinking Eclipse is slow and you have a huge number of dependencies maven dependencies and so on or just very huge projects you should just download it and try it out and we see a lot of improvement here. Also relatively recently someone from Red Hat implemented asynchronous code completion that is also a very nice feature. Currently all code completion Eclipse runs in the UI thread which is good if the underlying infrastructure like the Java compiler and so on is fast enough to deliver the data. The Java tooling is fast enough in most cases to do this but other implementations. I heard for example it's a few years ago that one of the Scala developers for Eclipse complained about this that it's not available any asynchronous code completion or SAP also I think had a talk recently but talked about that and now we have it in default and it has been implemented in a way that it's more of a replacement for everyone. You call it a different method to set up your code completion and if your code completion is not accessing the UI thread you can just or the developers of this tooling can just switch to it and you should have a better experience. So on the SOPOD is already using it I think with target editor and so we are already applying it to the Eclipse platform itself so that we also cause our own consumers. Speaking of SOPOD, SOPOD also helped implementing a new way of implementing editors for Eclipse. The Red Hat I think noted that more and more programming language appearing maybe also dying and the Eclipse way of forcing someone to implement an own editor was considered as not the best pattern to any more for this fast changing world. So SOPOD and Mikael from Red Hat worked on a new editor so it's basically one editor and everyone can extend it very easily. So you can get syntax highlighting to any programming language. You can have code completion relatively simple implemented. The Red Hat people are also working on support of the language server protocol. That is a standard defined by Microsoft to connect to any programming language. It's a JSON based format where basically an ID and editor can ask the language server maybe running locally what kind of syntax highlighting do I need to use and then you get a JSON reply. So basically once this is finished and applied to Eclipse you have support for all programming languages which implement or provide a language server for this. A very nice and huge thing I think. So how complex is this? Maybe just an example. So you cannot read this but you write this code and then you have a few lines of XML which did not fit on the slide and 20 more lines and then you have an editor for Gradle at least doing some hard coded syntax highlighting for the Gradle editor. And that just let me go back and that used to be much more work for you to support at least some syntax highlighting. So relatively simple to do this. I think it's someone you'll get up this example. So if you just there's a guy here in front so pot and you want to see the code you ask him later, okay. We also try to have a focus on usability that's almost the last thing I want to say before I open for questions. We try to relabel things, filter certain things and so on. And let me just switch to Eclipse ID. So for example, if you remember the old days so the ID you're using and you want to restart your Eclipse restart was located somewhere in the middle. I think it was before print and after Convert Lined Deliverters. I'm not sure anymore. It's so long ago that we changed this. But it's not the most logical place for restart. So we have just reshuffled these things or if you remember the problems view, a lot of problems. There was no easy way to get to the filter. We have now a filter button and you can progress it. And we have also simplified this awkward looking dialogue from the last release and so on. So we try to do these little things. One little thing also is giving better labels to our buttons. So it's actually also guideline from Microsoft and others. So this is our safe hand at the moment. It's a busy safe resource and no cancer, yes. And depending on the operation, you may have to read this and more user-friendly is of course to have real labeled buttons and so on. So we are also doing things like this. It's also relatively easy these days to contribute. There's a lot of possibilities to do this but the easiest way in my opinion, if you see a patch, you go to git.eclipse.org slash r and then we'll just extend, expand this and you find the project you would want to fix or contribute, projects list. And let's say you interested in JDT and then you get in, if you're logged in and this is the user of Fabian sitting here, then you get in URL which you can just can use to clone from Eclipse. If you clone by Eclipse, it will basically set up everything for code completion and if you do a commit, it will upload it automatically, commit and push to the Garrett code review system if you have cloned from Eclipse and then it will just create here a code review and hopefully someone will look at the code review and give you some feedback and integrate it. It's relatively simple if you need a longer description. There's also a free book available which I have written a while ago. It goes a little bit through the political backgrounds but the technical setup takes for contribution takes usually 10 minutes including the clone time and you need to only sign an Eclipse license agreement that you're allowed to do this and then you're good to go. You may end up with some compile errors but there's usually a read me or there's an oomph setup file which can help you so it should also be easy for you to contribute. And with that, I think we have a few minutes for questions. Sorry, so that was my questions about the language server you talked about. Is it just for syntax highlighting or does it also do a code intelligence refactoring type of things? I think there's not yet an API for refactoring but it also allows code completion and also syntax highlighting, like you said, tooltips and also quick outline so that it gives you the information which you can then integrate in your IDE and that is something which I guess will be extended. Microsoft uses this for its own code editor which I forgot the name and so they have developed it for their own purpose and others now speaking on this. For example, for the unnamed Microsoft code editor they're using the Eclipse Java implementation to do the code completion and syntax highlighting in their VS editor, I think it's called. There's also a problem reporting. Oh, cool, thank you. Any other questions? Yeah, sorry. About a year ago I was using a platform for post completion where you enter a variable and then you put a dot behind it and then you get a post completion. Is this in standard Eclipse now? Not sure if the first question was not here built for everyone, so I competed. So post fixed completion was a question. There was a project, a student project done. Let me just see Eclipse. It's a really nice feature and IntelliJ has it. As you can see from the Google results. So let me just go to this. So basically what it does in case there should be an animated gif. Maybe it's where your browser plugin turned on. So basically what it does, you have a variable and use dot dot and write something then it can reformat the code to your liking. So the idea is that you do not have to reposition the cursor if you do something. You write a variable and then you would like to put it in if block. And then you just have it dot if and then it rewrites the code to your liking. It's a really nice feature. I use it in IntelliJ all the time because I never remember the shortcuts there. And this is a student implementation. It is not yet integrated into standard. We hope that we still will be able to put it in the standard. Looking for the question here. Fabian and I just talked about it yesterday. And maybe Fabian is going to work on it. I would very much like that because then I would not need my colleagues to push it. Yeah, you can already use it. You can already install it. The post fix completion and then but I would also like to have it in standard. I think it's really nice for standard. So if you go if you recently cleaned up it a little bit. So if you go to Voguella company and you spell it correctly, you find a clone there. And if you clone it and maybe clean and stall then it will build it and install it yourself. But we're planning also to provide a better upside for that. All right, I think one last question maybe. The question was is there much more code clean up needed and I think I always expect it to end. So it's always like, okay, now we are done. And then we go into another area of the code and then we find also certain things which are not yet updated. But we're getting better at it. For example, Fabian has recently developed some AST transformation to do some helper method conversion to lambdas. Which was a very awkward manual process. We have also tools written to convert old J-Unit three test suites to J-Unit four. And I expect it to be done soon. So next year I will tell you again that we're still doing this work. But I hope at some point and when Java nine comes out we have to do it again. All right, thank you.