 Hi, folks. Today I'm going to talk about developing Java applications using Microsoft Visual Studio Code. For those of you who don't know me, my name is Gerke Marjan. I work for Red Hat on developer tooling. I do several things including Java language server, hybrid mobile tooling, Eclipse J and whatnot. Let's first start by looking at what is Visual Studio Code. If you look at the developer tooling space, Visual Studio Code kind of goes around between an IDE and a text editor. It actually brands itself as a code editor. So you can still do your coding. It's not as established full IDE. So let's do a demo of what I mean by that. Starting my VS Code with my VS Code Java demo project. As you can see, this is a Maven-based project which is using Spring Boot underneath. Let's go in and take a look at a Java file. Once you open this Java file, the first thing that you will notice is it actually starts to give you code assist and hover support. For those of you who are not very familiar with VS Code, VS Code is a very versatile editor. It is very responsive. What we do with VS Code Java extension is we are actually using a Java language server and integrate that with Visual Studio Code. Therefore, we can actually get code assist and other Java language functionality. So let me go in and just type in what are the features that we support on VS Code? We support obviously the code assist for it. We support hover. Of course, we support compiler errors. We do have a bit of code refactoring. This one is an interaction. This is something called code lenses on Visual Studio Code. Through the code lenses, you can actually see, for instance, this code lens tells me how many implementations of this interface exist. If I just click on it, it shows me the list of interfaces. If I go here, I can directly go here. It tells me that there is a problem with it. If I click here, there are methods that hasn't been implemented on this class. I can just tell it to implement those. As you can see, we can do code lenses, we can do code assist, we can do refactoring. Let me show you a few other refactoring that we have. For instance, if I go here and invoke, it will just insert the missing code for me. Things like that, small things. You can organize, of course, your ... Let's go here and just do an import. What I can do here is I can actually let me just import something that is ... What this can do is it can organize my imports for me as well, as you would expect on a typical Java IDE. Another feature that we support is we can format the whole document, or let me just break it a bit. Right now, it's on auto-format there. When you don't have the auto-format on, you can actually invoke the format and it will format it for you. But auto-format is also another feature that would support. If you are interested in seeing the outline, you can see it from here. If you want to do a search, let's search for message, for instance. It can take you directly to that class. If you want to just browse around the classes, you can do that as well. Let's go to the string, comparable. Yeah, sure. You can go around browsing Java classes with it, or class files with it. One thing that it will do is it will discover your dependencies through Maven file if you have one, and download the source code for it, and it will provide content assist and documentation through your Maven. We support Maven and Gradle projects, so if you have a Gradle project, you can actually use that as well. Another feature that has been recently added is you can do debugging. For that, let me just go to my settings here. I have a task, and a task on VS Code is a way to run a command line. What I'll do is I'll just run a task for running this application. This is just running it. Let's kill this one. I think I have a better one here. Let me just switch to another project that will make go faster. This is a vertex project. What I'll do is I will go to my task, Jason. The big difference is I added a debug task here, which will allow me to run my word tags on debug mode. What this will essentially do is it will run the task and open the debug port on port 5005 by default. You can configure that. If I go to my launch.json, if you're familiar with a collapse, is it cool into launch configurations? On my launch.json, I'm going to say I want to do a debug attach to localhost at port 5005. My word tags application is running. At this point, I should be able to just go to and invoke my application. Now let's try to debug it. Let's see if I can find a good place to put a breakpoint. Let's go back here, add Java 1 and invoke. All of a sudden, I'm on my debugger. I hit my breakpoint. As you would expect from any debugger, you can actually go and see the values of your variables. You can even change them and you can let it go and it should change the value that is displayed over here. This is basically the VS Code Java support. Thanks for having me.