Evolution of
Visual Studio Code
Java Ecosystem
Adi Polak
@AdiPolak
Microsoft
Java Cloud Native on Azure – Landscape
IaaS – Linux Distributions
Multi-Cloud Platforms Tools DevOps
Cloud Automation Kubernetes & Containers
OSS Foundations
JVMs, Frameworks, Runtimes
Azure Services
CosmosDB Service
Fabric
App
Service
Container
Instances
Container
Registry
Kubernetes
Service
Serverless
Functions
App
Insights
Azure
DevOps
SQL
Service
Event
Grid
Event
Hub
Service
Bus
Active
Directory
Microsoft SDKs for Java
Over 50+ services covered
On Microsoft Azure,
over 50% of workloads
are Linux-based.
And over 60,000 patents now open source under OIN.
Editors
jEdit
Java-based, multi-platform
http://www.jedit.org/
TextPad
Windows-only
https://www.textpad.com/
Sublime Text
Windows, Mac, Linux
https://sublimetext.com/
Atom Editor
Windows, Mac, Linux
https://atom.io/
Why Visual Studio Code?
Text
Editors
IDEs
• Keyboard centric
• Lightweight/fast
• File/folders
• Polyglot
• Project systems
• Integrated build
• Code understanding
• Debug
• Templates/wizards
• Designers
• ALM integration
• Keyboard centric
• Lightweight/fast
• File/folders
• Polyglot
• Code understanding
• Debug
• Lightweight editor
• Works on Windows, Mac,
Linux
• Free and open-source
• Any language, any
framework
Hundreds of programming
languages supported
Language Server Protocol !
https://langserver.org/
Hackathon from Red Hat, IBM,
Codenvy and Microsoft
eclipse.jdt.ls
• Started July 2016 by Red Hat
• 2 MSFT committers
Java Support
# downloads >
Popular Java Extensions
Comprehensive support built by
Microsoft, Red Hat, Pivotal and
open source community
JetBrains 2017 survey
JetBrains 2018 Survey
7/1/2015 7/1/2016 7/1/2017 7/1/2018
VS Code Java Developers
Setting up Java environment, repeatedly
Installing VS Code and Extensions
If you could streamline setting up a Java environment using
VS code that would help (solving) a lot of problems I've had
with it. I know that this isn't really a problem with you and
more a problem with the Java ecosystem, but regardless its a
barrier to entry because as someone who changes
computers, OS's, and environments often its pretty tedious to
manage Java installation and then debug problems if there is
a version mismatch.
– Visual Studio Code Java Developer
Auto-detect environment, then
pull components online, install
and configure
Java Development Kit
Visual Studio Code
Java Extensions
Demos
Create/Run/Debug Java Plain Code
Unit Testing on VS Code
Create/Run/Debug Spring App on VS Code
Using Spring Boot Dashboard
Spring Initializers: on Azure and VS Code
aka.ms/spring-init-azure
IntelliCode
AI-assisted development
Recommends code
completion
Machine Learning
Learns from GitHub
projects
Java support
@AdiPolak
Live Share - Real-time
collaborative development
Live
Editing
Audio
Call
Video Live Share
How development often looks like
@AdiPolak
Remote Development
SSH
Open a remote folder on any remote machine, virtual
machine, or container with a running SSH server and take
full advantage of VS Code's feature set. Once connected to
a server, you can interact with files and folders anywhere
on the remote filesystem.
Container
The Remote - Containers extension lets you use a Docker
container as a full-featured development environment.
Consist and easily reproducible toolchain.
Quickly swap between different, isolated development
environments and safely make updates without worrying
about impacting your local machine.
Make it easy for new team members / contributors to get
up and running in a consistent development environment.
Container Development
Docker
Containerization – Add Dockerfile to your
project
Images – Build, Run & Manage Images
Kubernetes
Orchestration - Authoring K8S Manifest
Files
Deployment - Apply Manifest Files to K8S
Clusters
Maintenance - Explore K8S Cluster
Resources
Troubleshooting - Inspect K8S Resources
Dev Space
Rapid, iterative Kubernetes development
experience
Demos Java Remote Dev
Let us know what you believe is more important!
• Performance and reliability
• More code actions and refactoring
• Easy to use (installation, setup, configuration,
import, etc.)
• Build tools – Maven, Gradle
• App server?
• Android support?
• More frameworks support (Java FX, etc.)
@AdiPolak
Remote Dev aka.ms/remote-os
VS Code for Java aka.ms/java-in-vscode
Live Share aka.ms/vs-live-share
Intelli Code aka.ms/intelli-code
Microsoft Learn microsoft.com/learn
(Microsoft + Java) ^ Spring
@ashleymcnamara

Evolution of VS code Java ecosystem

  • 1.
    Evolution of Visual StudioCode Java Ecosystem Adi Polak @AdiPolak Microsoft
  • 2.
    Java Cloud Nativeon Azure – Landscape IaaS – Linux Distributions Multi-Cloud Platforms Tools DevOps Cloud Automation Kubernetes & Containers OSS Foundations JVMs, Frameworks, Runtimes Azure Services CosmosDB Service Fabric App Service Container Instances Container Registry Kubernetes Service Serverless Functions App Insights Azure DevOps SQL Service Event Grid Event Hub Service Bus Active Directory Microsoft SDKs for Java Over 50+ services covered
  • 3.
    On Microsoft Azure, over50% of workloads are Linux-based. And over 60,000 patents now open source under OIN.
  • 4.
  • 5.
  • 6.
  • 7.
    Sublime Text Windows, Mac,Linux https://sublimetext.com/
  • 8.
    Atom Editor Windows, Mac,Linux https://atom.io/
  • 9.
    Why Visual StudioCode? Text Editors IDEs • Keyboard centric • Lightweight/fast • File/folders • Polyglot • Project systems • Integrated build • Code understanding • Debug • Templates/wizards • Designers • ALM integration • Keyboard centric • Lightweight/fast • File/folders • Polyglot • Code understanding • Debug
  • 10.
    • Lightweight editor •Works on Windows, Mac, Linux • Free and open-source • Any language, any framework
  • 12.
  • 13.
  • 14.
  • 15.
    Hackathon from RedHat, IBM, Codenvy and Microsoft eclipse.jdt.ls • Started July 2016 by Red Hat • 2 MSFT committers
  • 16.
    Java Support # downloads> Popular Java Extensions Comprehensive support built by Microsoft, Red Hat, Pivotal and open source community
  • 17.
    JetBrains 2017 survey JetBrains2018 Survey 7/1/2015 7/1/2016 7/1/2017 7/1/2018 VS Code Java Developers
  • 18.
    Setting up Javaenvironment, repeatedly Installing VS Code and Extensions If you could streamline setting up a Java environment using VS code that would help (solving) a lot of problems I've had with it. I know that this isn't really a problem with you and more a problem with the Java ecosystem, but regardless its a barrier to entry because as someone who changes computers, OS's, and environments often its pretty tedious to manage Java installation and then debug problems if there is a version mismatch. – Visual Studio Code Java Developer
  • 19.
    Auto-detect environment, then pullcomponents online, install and configure Java Development Kit Visual Studio Code Java Extensions
  • 20.
    Demos Create/Run/Debug Java PlainCode Unit Testing on VS Code Create/Run/Debug Spring App on VS Code Using Spring Boot Dashboard
  • 21.
    Spring Initializers: onAzure and VS Code aka.ms/spring-init-azure
  • 22.
    IntelliCode AI-assisted development Recommends code completion MachineLearning Learns from GitHub projects Java support
  • 23.
  • 24.
    Live Share -Real-time collaborative development Live Editing Audio Call
  • 25.
  • 26.
    How development oftenlooks like @AdiPolak
  • 28.
    Remote Development SSH Open aremote folder on any remote machine, virtual machine, or container with a running SSH server and take full advantage of VS Code's feature set. Once connected to a server, you can interact with files and folders anywhere on the remote filesystem. Container The Remote - Containers extension lets you use a Docker container as a full-featured development environment. Consist and easily reproducible toolchain. Quickly swap between different, isolated development environments and safely make updates without worrying about impacting your local machine. Make it easy for new team members / contributors to get up and running in a consistent development environment.
  • 29.
    Container Development Docker Containerization –Add Dockerfile to your project Images – Build, Run & Manage Images Kubernetes Orchestration - Authoring K8S Manifest Files Deployment - Apply Manifest Files to K8S Clusters Maintenance - Explore K8S Cluster Resources Troubleshooting - Inspect K8S Resources Dev Space Rapid, iterative Kubernetes development experience
  • 30.
  • 31.
    Let us knowwhat you believe is more important! • Performance and reliability • More code actions and refactoring • Easy to use (installation, setup, configuration, import, etc.) • Build tools – Maven, Gradle • App server? • Android support? • More frameworks support (Java FX, etc.)
  • 32.
    @AdiPolak Remote Dev aka.ms/remote-os VSCode for Java aka.ms/java-in-vscode Live Share aka.ms/vs-live-share Intelli Code aka.ms/intelli-code Microsoft Learn microsoft.com/learn (Microsoft + Java) ^ Spring @ashleymcnamara

Editor's Notes

  • #2 I’m at Microsoft and it’s a pleasure to be here at Devoxx Poland, talking to all of you about what Microsoft has been doing for the Java community, for Spring, for Spring developers with pivotal and so much more. Today we are going to focus on VS Code and the Java ecosystem. Let’s take the journey together and learn about the exciting plugins and updates
  • #4 All of these are supported on Azure with strong relationship between Microsoft and the vendors and project leaders of these technologies.
  • #5 Microsoft announced today that it’s joining the Open Invention Network (OIN), an open-source patent group designed to help protect Linux from patent lawsuits. In essence, this makes the company’s library over 60,000 patents open source and available to OIN members, via ZDNet.
  • #16 The Language Server protocol is used between a tool (the client) and a language server to integrate features like auto complete, go to definition, find all references and alike into the tool The LSP was created by Microsoft to define a common language for programming language analyzers to speak. Today, several companies have come together to support its growth, including Codenvy, Red Hat, and Sourcegraph, and the protocol is becoming supported by a rapidly growing list of editor and language communities. See below for details on and links to current client and server implementations.
  • #17 The java Language server was developed in 2016 during a hackathon in Swisserland with people from IBM,Codeenby, red hat and microsoft
  • #18 Java support in Visual Studio started at 2016
  • #24 Code completion in Visual Studio Code for Java is provided by Language Support for Java(TM) by Red Hat. The extension is powered by the same Java development tools (JDT) behind Eclipse, so you can expect the same level of support. In addition, there's also AI-assisted IntelliSense called IntelliCode. It saves you time by putting what you're most likely to use at the top of your completion list. IntelliCode recommendations are based on thousands of open-source projects on GitHub each with over 100 stars, so it’s trained on the most common usages from high quality projects. When combined with the context of your code, the completion list is tailored to promote those practices.  IntelliCode works well with popular Java libraries and frameworks like Java SE and Spring. It will help you whether you are doing monolithic web apps or modern microservices.
  • #26 Live Share provides you with the ability to co-edit and co-debug while sharing audio, servers, terminals, diffs, comments, and more. Whether you are conducting a code review, pair programming with a teammate, participating in a hack-a-thon, or even teaching an interactive lecture, Live Share can support you in the many ways you collaborat