SlideShare a Scribd company logo
1
Building a Language Server
for Eclipse MicroProfile
EclipseCon 2020
Who we are
2
Ryan Zegray
@RyanZegray
Kathryn Kodama
@KathrynKodama
YK Chang
@yeekangc
What is Eclipse MicroProfile?
● Eclipse MicroProfile is an open-source community specification for Enterprise Java
microservices
● A community of individuals, organizations, and vendors collaborating within an open
source (Eclipse) project to bring microservices to the Enterprise Java community
3
https://openliberty.io/docs/intro/microprofile.html
What is a Language Server?
● Language Server
○ Provides language specific features, such as code complete, hover, go
to definition, quick fixes and diagnostics.
○ Communicates with a code editor via the Language Server Protocol.
● Language Server Protocol (LSP)
○ Open source protocol specification to standardize the communication
between code editors and language servers.
4
Why a Language Server?
Language Server benefits
● Before LSP, each editor would have its own API for adding language features
● With LSP, one server implementation can work with multiple editors
● Language server can be written in any language
5
Eclipse LSP4MP
● Language Server implementation based on the Language Server Protocol for the Eclipse
MicroProfile programming model
● Provides core language support capabilities (such as code complete, diagnostics, quick
fixes) to enable developers to easily and quickly develop cloud-native applications using
MicroProfile APIs
6
Project Community
7
@fbricon @angelozerr @datho7561
@RyanZegray @KathrynKodama @ericglau @yeekangc
Jeff Maury
Baibhab Debnath
Emily Jiang
Ivar Grimstad
David Kwon
Architecture
Two components:
● MicroProfile LS that provides MicroProfile language features using LSP
● MicroProfile JDT.LS Extension which extends the Eclipse JDT.LS (Java language
server) to provide Java project information to the MicroProfile LS (i.e. Java classpath
changes, AST info etc.)
8
• Communicate to each
through the IDE using JSON-
RPC
Java Language Support
● Java already has excellent language support
○ Eclipse Java Development Tools (JDT) and the JDT.LS Language Server
that uses the JDT
● Problem: When providing MicroProfile support we do not want to duplicate the
work already being done by the JDT (computing the classpath, building
Abstract Syntax Tree, etc.)
○ Solution: Reuse what we can get from JDT through MicroProfile JDT.LS
extension
9
Diagnostics for Java Files
10
Other Language Features for Java Files
11
Language Features for Properties
12
Language Features for Properties
13
IDE Clients
● An IDE or editor client surfaces the language support capabilities provided by
a language server to the users of an IDE or editor
● Tools for MicroProfile
○ A Visual Studio Code extension that provides support for the development of
MicroProfile-based applications via Eclipse LSP4MP
○ https://github.com/redhat-developer/vscode-microprofile
14
Extending Eclipse LSP4MP
● Eclipse LSP4MP handles language features for both properties files and Java
files.
○ Properties files – completion, diagnostics (validation), documentation
○ Java files – snippets, diagnostics, code actions/quick fixes.
● Third parties can extend LSP4MP to provide additional functionality through
Java SPI.
○ Ex. Quarkus provides additional snippets as well as support for Quarkus
specific config properties.
15
Demo
16
Lessons Learnt
● Reuse what is available through JDT.LS via extension point
● Flexibility and opportunities for community to participate and innovate
○ 1 common language server that can be exposed by different clients for
different editors or IDEs
○ LSP4MP can extended by others to provide additional capabilities
17
Where we are
● 1st release of Eclipse LSP4MP
○ 0.1 release in late September 2020
● 1st release of Tools for MicroProfile
○ 0.1 release that that uses LSP4MP 0.1
● Supported API? See next chart.
18
MicroProfile API Support
19
MicroProfile APIs Properties
completion
Properties
diagnostics
Java
diagnostics
Java code actions Java code snippets
Configuration x x
Context Propagation x x
Fault Tolerance x x x x x
Health x x x x x
Long Running Actions x x
Metrics x x x x x
OpenAPI x x x x
Rest Client x x x x x
JAX-RS x x x
Reactive Messaging x x
GraphQL x x
JWT Authentication x x
What’s Next
● Complete support for all MicroProfile APIs
● Currency and support for next major MicroProfile release
● Community collaboration on additional clients like LSP4MP clients for Eclipse
IDE and IntelliJ IDEA
20
● Install Tools for
MicroProfile from the VS Code
Marketplace
● Contribute to the Eclipse
LSP4MP project on GitHub
https://github.com/eclipse/lsp4
mp
21
Get Involved
Thank You
22

More Related Content

PDF
Landscape of Eclipse MicroProfile Tools
PDF
OpenAPI and gRPC Side by-Side
PPTX
Build Leaner, Faster Web Applications with ASP.NET
PDF
Kotlin for Android
PPTX
The New York Times: Sustainable Systems, Powered by Python
PPTX
Top Programming Languages & Frameworks For App Development
PDF
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
PDF
Git essentials
Landscape of Eclipse MicroProfile Tools
OpenAPI and gRPC Side by-Side
Build Leaner, Faster Web Applications with ASP.NET
Kotlin for Android
The New York Times: Sustainable Systems, Powered by Python
Top Programming Languages & Frameworks For App Development
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
Git essentials

What's hot (20)

PPTX
PDF
Opencast Architecture
PPTX
Microsoft .Net Technology
PPT
TypeScript - Javascript done right
PDF
Javantura v4 - What’s NOT new in modular Java - Milen Dyankov
PDF
Kotlin Multiplatfom In Action
PPTX
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
DOCX
PPTX
Kotlin Multiplatfom In Action
PPTX
Evolution of .net frame work
PDF
Building Command Line Tools with Golang
PDF
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
PDF
Ubc group presentation_march_25th
PPTX
Microsoft .Net Framework
PDF
Barcamp Bangkhen :: Robot Framework
PPTX
Go for Windows - April 2019
PDF
Software maintenance PyConUK 2016
PPTX
Indy meetup#7 effective unit-testing-mule
PDF
Spring Roo Flex Add-on
Opencast Architecture
Microsoft .Net Technology
TypeScript - Javascript done right
Javantura v4 - What’s NOT new in modular Java - Milen Dyankov
Kotlin Multiplatfom In Action
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Kotlin Multiplatfom In Action
Evolution of .net frame work
Building Command Line Tools with Golang
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
Ubc group presentation_march_25th
Microsoft .Net Framework
Barcamp Bangkhen :: Robot Framework
Go for Windows - April 2019
Software maintenance PyConUK 2016
Indy meetup#7 effective unit-testing-mule
Spring Roo Flex Add-on
Ad

Similar to Building a Language Server for Eclipse MicroProfile (20)

PDF
Eclipse demo camp 2016 Toronto
ODP
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
PPTX
Java (Part 2) unit 1
ODP
[EclipseCon France 2017] Language Server Protocol in action
PPTX
Boost developer productivity with EE, MP and OL (Devoxx Ukraine 22).pptx
PDF
Can we adopt Eclipse IoT projects on Android Embedded Devices_.pdf
PDF
APIdays 2015 - The State of Web API Languages
PDF
APIdays 2015 - The State of Web API Languages
PDF
Build Great Networked APIs with Swift, OpenAPI, and gRPC
KEY
Language Engineering in the Cloud
PDF
LF_APIStrat17_OpenAPI and gRPC Side-by-Side
PPTX
JAVA PROGRAMJAVA PROGRJAVA PROGRJAVA.pptx
ODP
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
PPT
Introduction to .net
PDF
Implementing Microservices with Jakarta EE and MicroProfile
PDF
Geoscience and Microservices
DOC
JAVA Developer_Resume_Vaibhav Srivastav
PPTX
Vs java (1)
PDF
Building a fully managed stream processing platform on Flink at scale for Lin...
PDF
The Ring programming language version 1.4 book - Part 2 of 30
Eclipse demo camp 2016 Toronto
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Java (Part 2) unit 1
[EclipseCon France 2017] Language Server Protocol in action
Boost developer productivity with EE, MP and OL (Devoxx Ukraine 22).pptx
Can we adopt Eclipse IoT projects on Android Embedded Devices_.pdf
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API Languages
Build Great Networked APIs with Swift, OpenAPI, and gRPC
Language Engineering in the Cloud
LF_APIStrat17_OpenAPI and gRPC Side-by-Side
JAVA PROGRAMJAVA PROGRJAVA PROGRJAVA.pptx
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
Introduction to .net
Implementing Microservices with Jakarta EE and MicroProfile
Geoscience and Microservices
JAVA Developer_Resume_Vaibhav Srivastav
Vs java (1)
Building a fully managed stream processing platform on Flink at scale for Lin...
The Ring programming language version 1.4 book - Part 2 of 30
Ad

Recently uploaded (20)

PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Designing Intelligence for the Shop Floor.pdf
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Introduction to Artificial Intelligence
PDF
medical staffing services at VALiNTRY
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
history of c programming in notes for students .pptx
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
ai tools demonstartion for schools and inter college
PDF
Digital Strategies for Manufacturing Companies
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
top salesforce developer skills in 2025.pdf
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPTX
Transform Your Business with a Software ERP System
Operating system designcfffgfgggggggvggggggggg
Navsoft: AI-Powered Business Solutions & Custom Software Development
Which alternative to Crystal Reports is best for small or large businesses.pdf
Designing Intelligence for the Shop Floor.pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Design an Analysis of Algorithms II-SECS-1021-03
Introduction to Artificial Intelligence
medical staffing services at VALiNTRY
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
history of c programming in notes for students .pptx
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
ai tools demonstartion for schools and inter college
Digital Strategies for Manufacturing Companies
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
Computer Software and OS of computer science of grade 11.pptx
PTS Company Brochure 2025 (1).pdf.......
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
top salesforce developer skills in 2025.pdf
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Transform Your Business with a Software ERP System

Building a Language Server for Eclipse MicroProfile

  • 1. 1 Building a Language Server for Eclipse MicroProfile EclipseCon 2020
  • 2. Who we are 2 Ryan Zegray @RyanZegray Kathryn Kodama @KathrynKodama YK Chang @yeekangc
  • 3. What is Eclipse MicroProfile? ● Eclipse MicroProfile is an open-source community specification for Enterprise Java microservices ● A community of individuals, organizations, and vendors collaborating within an open source (Eclipse) project to bring microservices to the Enterprise Java community 3 https://openliberty.io/docs/intro/microprofile.html
  • 4. What is a Language Server? ● Language Server ○ Provides language specific features, such as code complete, hover, go to definition, quick fixes and diagnostics. ○ Communicates with a code editor via the Language Server Protocol. ● Language Server Protocol (LSP) ○ Open source protocol specification to standardize the communication between code editors and language servers. 4
  • 5. Why a Language Server? Language Server benefits ● Before LSP, each editor would have its own API for adding language features ● With LSP, one server implementation can work with multiple editors ● Language server can be written in any language 5
  • 6. Eclipse LSP4MP ● Language Server implementation based on the Language Server Protocol for the Eclipse MicroProfile programming model ● Provides core language support capabilities (such as code complete, diagnostics, quick fixes) to enable developers to easily and quickly develop cloud-native applications using MicroProfile APIs 6
  • 7. Project Community 7 @fbricon @angelozerr @datho7561 @RyanZegray @KathrynKodama @ericglau @yeekangc Jeff Maury Baibhab Debnath Emily Jiang Ivar Grimstad David Kwon
  • 8. Architecture Two components: ● MicroProfile LS that provides MicroProfile language features using LSP ● MicroProfile JDT.LS Extension which extends the Eclipse JDT.LS (Java language server) to provide Java project information to the MicroProfile LS (i.e. Java classpath changes, AST info etc.) 8 • Communicate to each through the IDE using JSON- RPC
  • 9. Java Language Support ● Java already has excellent language support ○ Eclipse Java Development Tools (JDT) and the JDT.LS Language Server that uses the JDT ● Problem: When providing MicroProfile support we do not want to duplicate the work already being done by the JDT (computing the classpath, building Abstract Syntax Tree, etc.) ○ Solution: Reuse what we can get from JDT through MicroProfile JDT.LS extension 9
  • 11. Other Language Features for Java Files 11
  • 12. Language Features for Properties 12
  • 13. Language Features for Properties 13
  • 14. IDE Clients ● An IDE or editor client surfaces the language support capabilities provided by a language server to the users of an IDE or editor ● Tools for MicroProfile ○ A Visual Studio Code extension that provides support for the development of MicroProfile-based applications via Eclipse LSP4MP ○ https://github.com/redhat-developer/vscode-microprofile 14
  • 15. Extending Eclipse LSP4MP ● Eclipse LSP4MP handles language features for both properties files and Java files. ○ Properties files – completion, diagnostics (validation), documentation ○ Java files – snippets, diagnostics, code actions/quick fixes. ● Third parties can extend LSP4MP to provide additional functionality through Java SPI. ○ Ex. Quarkus provides additional snippets as well as support for Quarkus specific config properties. 15
  • 17. Lessons Learnt ● Reuse what is available through JDT.LS via extension point ● Flexibility and opportunities for community to participate and innovate ○ 1 common language server that can be exposed by different clients for different editors or IDEs ○ LSP4MP can extended by others to provide additional capabilities 17
  • 18. Where we are ● 1st release of Eclipse LSP4MP ○ 0.1 release in late September 2020 ● 1st release of Tools for MicroProfile ○ 0.1 release that that uses LSP4MP 0.1 ● Supported API? See next chart. 18
  • 19. MicroProfile API Support 19 MicroProfile APIs Properties completion Properties diagnostics Java diagnostics Java code actions Java code snippets Configuration x x Context Propagation x x Fault Tolerance x x x x x Health x x x x x Long Running Actions x x Metrics x x x x x OpenAPI x x x x Rest Client x x x x x JAX-RS x x x Reactive Messaging x x GraphQL x x JWT Authentication x x
  • 20. What’s Next ● Complete support for all MicroProfile APIs ● Currency and support for next major MicroProfile release ● Community collaboration on additional clients like LSP4MP clients for Eclipse IDE and IntelliJ IDEA 20
  • 21. ● Install Tools for MicroProfile from the VS Code Marketplace ● Contribute to the Eclipse LSP4MP project on GitHub https://github.com/eclipse/lsp4 mp 21 Get Involved