SlideShare a Scribd company logo
1 of 24
Download to read offline
Adopting Language Server for Apache Camel:
feedback from a Java/Eclipse plugin developer
perspective
Aurélien Pupier
Senior Software Engineer
13th
June 2018
@apupier
CONTEXT
CONTEXT
● Apache Camel
○ Well established Open Source project
○ Project integration
● 2 existing tools
○ Graphical
○ Textual
● Users stay on their preferred IDE
○ Better for the project under integration
○ Hipsters
○ Just don’t want to learn a new IDE
● Java/Eclipse plugin developer
State of current tools
Language Server
More (unofficial) coming...
How to write the server?
Write in your own language!
How to write the server?
Let’s search for examples!
LSP4J
How to write the server?
● LSP4J
● Fat jar for easy launch
● Restrict to a single-file scope (if possible)
● TextDocumentSyncKind.Full
● sysin/sysout
○ ⇒ No log on sysout!!
How to write the server?
For the future?
● Docker image?
● Tutorial
https://github.com/LucasBullen/LSP4J_Tutorial
Now test with IDEs!
● Configuration more or less easy
● Too complex for real users!!
⇒ Need to provide a client per IDE starting the server!
⇒ in different languages!
With which IDE to start?
● Eclipse Desktop IDE
○ we know it!
● VS Code
○ De facto “reference implementation”
○ Trendy
● Eclipse Che/OpenShift.io
○ Web-based
○ Java
● Listen to your existing community
More (unofficial)
coming...
Technical advice - IDE integration
● “Manual” installation showstopper
● Marketplaces integration
○ Account creation hell
○ Specific terminology/build
Technical advice - IDE integration
Eclipse Desktop (1/2)
● LSP4E
● (Process)StreamConnectionProvider
● Content-type association
● Generic text editor only!
○ No XML LS (with completion)
○ Reuse XML Editor
Technical advice - IDE integration
Eclipse Desktop (2/2)
● To help development:
○ Configure remote debug possibilities
○ Communication log
Technical advice - IDE integration
VS Code
● How to launch Java from TypeScript?
○ Java LSP client example, now also Camel Client
● Don’t know yet for writing a test…
● Not friendly with bad request
○ log on stdout → crash!
Technical advice - IDE integration
Eclipse Che - OpenShift.io
● Easy to write
● Che developers kind enough to validate
● Web-based!
● Requires recompilation
● Hard to test
● Not activated by default
○ Requires changing preference
○ Or to provide a specific “Che stack”
Architecture - multi-Language Server
● Several LS on same file?
● How to avoid redundancy?
○ Extension points in a LS?
○ Clients responsible to merge results?
○ Formatting?
Demo - State of LSP for Camel
Time/resource management
● Half-day per week for 2 developers during 7
months
○ Regularly skipped…
○ But also several hours reading docs
● Communities working on LSP are active
In a nutshell
● LSP known only in Eclipse/Tooling world
● Key points:
○ List of potential supported IDEs
○ Demo in one desktop and one web-based IDE
○ Marketplace entries
● Few work weeks to have several IDEs supported
● Plan a bit of time to bootstrap for all wanted IDEs
What’s next?
● Implement all of LSP
● Cross-LS…
● Other protocols?
○ Debug Adapter Protocol
○ Creating new project?
○ Graphical server protocol?
● IDE client?
○ Docker
○ LS Marketplace?
Want more LSP @EclipseCon?
● Wed 10:45 Implementing Language Servers - the
Good, the Bad, the Ugly by Martin Lippert
● Wed 10:45 The future of development tooling: the
example of Eclipse Che, Theia and Sirius by Mélanie
Bats and Stevan Le Meur
● Wed 16:30 IoT Cloud development with Che by Jens
Reimann
● Thur 10:45 sprotty - Graphical Views For Web
Applications
● Come chat with me :-)
Start writing your Language Server!
Aurélien Pupier
Senior Software Engineer
@apupier
Evaluate the Sessions
-1 0 +1
Sign in and vote at eclipsecon.org

More Related Content

What's hot

Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Codemotion
 
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Codemotion
 
Porting 100k Lines of Code to TypeScript
Porting 100k Lines of Code to TypeScriptPorting 100k Lines of Code to TypeScript
Porting 100k Lines of Code to TypeScriptTiny
 
Golang from Scala developer’s perspective
Golang from Scala developer’s perspectiveGolang from Scala developer’s perspective
Golang from Scala developer’s perspectiveSveta Bozhko
 
Growing up new PostgreSQL developers (pgcon.org 2018)
Growing up new PostgreSQL developers (pgcon.org 2018)Growing up new PostgreSQL developers (pgcon.org 2018)
Growing up new PostgreSQL developers (pgcon.org 2018)Aleksander Alekseev
 
Stockholm JAM September 2018
Stockholm JAM September 2018Stockholm JAM September 2018
Stockholm JAM September 2018Andrey Devyatkin
 
An introduction to go programming language
An introduction to go programming languageAn introduction to go programming language
An introduction to go programming languageTechnology Parser
 
5 important languages for DevOps
5 important languages for DevOps5 important languages for DevOps
5 important languages for DevOpsRavi Sagar
 
Let your REST API talk @java2days
Let your REST API talk @java2daysLet your REST API talk @java2days
Let your REST API talk @java2daysNikolay Petkov
 
A Shallow Survey of Alternative Languages on the JVM
A Shallow Survey of Alternative Languages on the JVMA Shallow Survey of Alternative Languages on the JVM
A Shallow Survey of Alternative Languages on the JVMCharles Anderson
 
Building Command Line Tools with Golang
Building Command Line Tools with GolangBuilding Command Line Tools with Golang
Building Command Line Tools with GolangTakaaki Mizuno
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to GoOliver N
 
Eclipse demo camp 2016 Toronto
Eclipse demo camp 2016 TorontoEclipse demo camp 2016 Toronto
Eclipse demo camp 2016 TorontoGorkem Ercan
 
Python debuggers slides
Python debuggers slidesPython debuggers slides
Python debuggers slidesmattboehm
 
The state of Jenkins pipelines or do I still need freestyle jobs
The state of Jenkins pipelines or do I still need freestyle jobsThe state of Jenkins pipelines or do I still need freestyle jobs
The state of Jenkins pipelines or do I still need freestyle jobsAndrey Devyatkin
 

What's hot (20)

Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
 
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
 
Porting 100k Lines of Code to TypeScript
Porting 100k Lines of Code to TypeScriptPorting 100k Lines of Code to TypeScript
Porting 100k Lines of Code to TypeScript
 
Golang from Scala developer’s perspective
Golang from Scala developer’s perspectiveGolang from Scala developer’s perspective
Golang from Scala developer’s perspective
 
Growing up new PostgreSQL developers (pgcon.org 2018)
Growing up new PostgreSQL developers (pgcon.org 2018)Growing up new PostgreSQL developers (pgcon.org 2018)
Growing up new PostgreSQL developers (pgcon.org 2018)
 
Quality Assurance in PostgreSQL
Quality Assurance in PostgreSQLQuality Assurance in PostgreSQL
Quality Assurance in PostgreSQL
 
Stockholm JAM September 2018
Stockholm JAM September 2018Stockholm JAM September 2018
Stockholm JAM September 2018
 
An introduction to go programming language
An introduction to go programming languageAn introduction to go programming language
An introduction to go programming language
 
5 important languages for DevOps
5 important languages for DevOps5 important languages for DevOps
5 important languages for DevOps
 
Let your REST API talk @java2days
Let your REST API talk @java2daysLet your REST API talk @java2days
Let your REST API talk @java2days
 
A Shallow Survey of Alternative Languages on the JVM
A Shallow Survey of Alternative Languages on the JVMA Shallow Survey of Alternative Languages on the JVM
A Shallow Survey of Alternative Languages on the JVM
 
Php : Why and When!
Php : Why and When!Php : Why and When!
Php : Why and When!
 
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
 
Building Command Line Tools with Golang
Building Command Line Tools with GolangBuilding Command Line Tools with Golang
Building Command Line Tools with Golang
 
Kshitij
KshitijKshitij
Kshitij
 
Go at Skroutz
Go at SkroutzGo at Skroutz
Go at Skroutz
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to Go
 
Eclipse demo camp 2016 Toronto
Eclipse demo camp 2016 TorontoEclipse demo camp 2016 Toronto
Eclipse demo camp 2016 Toronto
 
Python debuggers slides
Python debuggers slidesPython debuggers slides
Python debuggers slides
 
The state of Jenkins pipelines or do I still need freestyle jobs
The state of Jenkins pipelines or do I still need freestyle jobsThe state of Jenkins pipelines or do I still need freestyle jobs
The state of Jenkins pipelines or do I still need freestyle jobs
 

Similar to Adopting Language Server for Apache Camel: feedback from a Java plugin developer

[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in actionMickael Istria
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLinaro
 
Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesYshay Yaacobi
 
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...Mickael Istria
 
Lua as a business logic language in high load application
Lua as a business logic language in high load applicationLua as a business logic language in high load application
Lua as a business logic language in high load applicationIlya Martynov
 
Making sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developersMaking sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developersLewiz
 
Who needs containers in a serverless world
Who needs containers in a serverless worldWho needs containers in a serverless world
Who needs containers in a serverless worldMatthias Luebken
 
HelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript DevelopersHelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript DevelopersJuho Teperi
 
Ceph Day SF 2015 - Keynote
Ceph Day SF 2015 - Keynote Ceph Day SF 2015 - Keynote
Ceph Day SF 2015 - Keynote Ceph Community
 
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLinaro
 
Ceph Day New York: Ceph: one decade in
Ceph Day New York: Ceph: one decade inCeph Day New York: Ceph: one decade in
Ceph Day New York: Ceph: one decade inCeph Community
 
Ceph: A decade in the making and still going strong
Ceph: A decade in the making and still going strongCeph: A decade in the making and still going strong
Ceph: A decade in the making and still going strongPatrick McGarry
 
SciPipe - A light-weight workflow library inspired by flow-based programming
SciPipe - A light-weight workflow library inspired by flow-based programmingSciPipe - A light-weight workflow library inspired by flow-based programming
SciPipe - A light-weight workflow library inspired by flow-based programmingSamuel Lampa
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101Linaro
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabRon Munitz
 
The self service developer
The self service developerThe self service developer
The self service developerLaszlo Fogas
 
Webbisauna - ClojureScript for Javascript Developers
Webbisauna - ClojureScript for Javascript DevelopersWebbisauna - ClojureScript for Javascript Developers
Webbisauna - ClojureScript for Javascript DevelopersJuho Teperi
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present futurelolopetit
 

Similar to Adopting Language Server for Apache Camel: feedback from a Java plugin developer (20)

[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoT
 
Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositories
 
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
 
Lua as a business logic language in high load application
Lua as a business logic language in high load applicationLua as a business logic language in high load application
Lua as a business logic language in high load application
 
Making sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developersMaking sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developers
 
Who needs containers in a serverless world
Who needs containers in a serverless worldWho needs containers in a serverless world
Who needs containers in a serverless world
 
Bootstrap4 x pages
Bootstrap4 x pagesBootstrap4 x pages
Bootstrap4 x pages
 
HelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript DevelopersHelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript Developers
 
Ceph Day SF 2015 - Keynote
Ceph Day SF 2015 - Keynote Ceph Day SF 2015 - Keynote
Ceph Day SF 2015 - Keynote
 
Create your library
Create your libraryCreate your library
Create your library
 
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMG
 
Ceph Day New York: Ceph: one decade in
Ceph Day New York: Ceph: one decade inCeph Day New York: Ceph: one decade in
Ceph Day New York: Ceph: one decade in
 
Ceph: A decade in the making and still going strong
Ceph: A decade in the making and still going strongCeph: A decade in the making and still going strong
Ceph: A decade in the making and still going strong
 
SciPipe - A light-weight workflow library inspired by flow-based programming
SciPipe - A light-weight workflow library inspired by flow-based programmingSciPipe - A light-weight workflow library inspired by flow-based programming
SciPipe - A light-weight workflow library inspired by flow-based programming
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
 
The self service developer
The self service developerThe self service developer
The self service developer
 
Webbisauna - ClojureScript for Javascript Developers
Webbisauna - ClojureScript for Javascript DevelopersWebbisauna - ClojureScript for Javascript Developers
Webbisauna - ClojureScript for Javascript Developers
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
 

More from Aurélien Pupier

Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...Aurélien Pupier
 
Master your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse toolingMaster your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse toolingAurélien Pupier
 
Classic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integrationClassic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integrationAurélien Pupier
 
Fast unit tests for Eclipse Plugins
Fast unit tests for Eclipse PluginsFast unit tests for Eclipse Plugins
Fast unit tests for Eclipse PluginsAurélien Pupier
 
Functional Testing made easy with SWTBot for Developers and Testers
Functional Testing made easy with SWTBot for Developers and TestersFunctional Testing made easy with SWTBot for Developers and Testers
Functional Testing made easy with SWTBot for Developers and TestersAurélien Pupier
 
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.Aurélien Pupier
 
How to contribute to Eclipse
How to contribute to EclipseHow to contribute to Eclipse
How to contribute to EclipseAurélien Pupier
 
Time to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did itTime to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did itAurélien Pupier
 
Take advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integrationTake advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integrationAurélien Pupier
 
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)Aurélien Pupier
 

More from Aurélien Pupier (12)

Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...
 
Master your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse toolingMaster your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse tooling
 
Classic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integrationClassic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integration
 
Fast unit tests for Eclipse Plugins
Fast unit tests for Eclipse PluginsFast unit tests for Eclipse Plugins
Fast unit tests for Eclipse Plugins
 
Functional Testing made easy with SWTBot for Developers and Testers
Functional Testing made easy with SWTBot for Developers and TestersFunctional Testing made easy with SWTBot for Developers and Testers
Functional Testing made easy with SWTBot for Developers and Testers
 
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
 
How to contribute to Eclipse
How to contribute to EclipseHow to contribute to Eclipse
How to contribute to Eclipse
 
Time to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did itTime to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did it
 
Take advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integrationTake advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integration
 
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
 
What's new GMF for Juno?
What's new GMF for Juno?What's new GMF for Juno?
What's new GMF for Juno?
 
What's hot Juno?
What's hot Juno?What's hot Juno?
What's hot Juno?
 

Recently uploaded

IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...asadnawaz62
 
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncWhy does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncssuser2ae721
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AIabhishek36461
 
Arduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptArduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptSAURABHKUMAR892774
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfAsst.prof M.Gokilavani
 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm Systemirfanmechengr
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfme23b1001
 
Transport layer issues and challenges - Guide
Transport layer issues and challenges - GuideTransport layer issues and challenges - Guide
Transport layer issues and challenges - GuideGOPINATHS437943
 
Concrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxConcrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxKartikeyaDwivedi3
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfAsst.prof M.Gokilavani
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024hassan khalil
 
Piping Basic stress analysis by engineering
Piping Basic stress analysis by engineeringPiping Basic stress analysis by engineering
Piping Basic stress analysis by engineeringJuanCarlosMorales19600
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girlsssuser7cb4ff
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEroselinkalist12
 
lifi-technology with integration of IOT.pptx
lifi-technology with integration of IOT.pptxlifi-technology with integration of IOT.pptx
lifi-technology with integration of IOT.pptxsomshekarkn64
 

Recently uploaded (20)

Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncWhy does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AI
 
Arduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptArduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.ppt
 
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm System
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdf
 
Transport layer issues and challenges - Guide
Transport layer issues and challenges - GuideTransport layer issues and challenges - Guide
Transport layer issues and challenges - Guide
 
Concrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxConcrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptx
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024
 
Piping Basic stress analysis by engineering
Piping Basic stress analysis by engineeringPiping Basic stress analysis by engineering
Piping Basic stress analysis by engineering
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girls
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
 
lifi-technology with integration of IOT.pptx
lifi-technology with integration of IOT.pptxlifi-technology with integration of IOT.pptx
lifi-technology with integration of IOT.pptx
 

Adopting Language Server for Apache Camel: feedback from a Java plugin developer

  • 1. Adopting Language Server for Apache Camel: feedback from a Java/Eclipse plugin developer perspective Aurélien Pupier Senior Software Engineer 13th June 2018 @apupier
  • 3. CONTEXT ● Apache Camel ○ Well established Open Source project ○ Project integration ● 2 existing tools ○ Graphical ○ Textual ● Users stay on their preferred IDE ○ Better for the project under integration ○ Hipsters ○ Just don’t want to learn a new IDE ● Java/Eclipse plugin developer
  • 6. How to write the server? Write in your own language!
  • 7. How to write the server? Let’s search for examples! LSP4J
  • 8. How to write the server? ● LSP4J ● Fat jar for easy launch ● Restrict to a single-file scope (if possible) ● TextDocumentSyncKind.Full ● sysin/sysout ○ ⇒ No log on sysout!!
  • 9. How to write the server? For the future? ● Docker image? ● Tutorial https://github.com/LucasBullen/LSP4J_Tutorial
  • 10. Now test with IDEs! ● Configuration more or less easy ● Too complex for real users!! ⇒ Need to provide a client per IDE starting the server! ⇒ in different languages!
  • 11. With which IDE to start? ● Eclipse Desktop IDE ○ we know it! ● VS Code ○ De facto “reference implementation” ○ Trendy ● Eclipse Che/OpenShift.io ○ Web-based ○ Java ● Listen to your existing community More (unofficial) coming...
  • 12. Technical advice - IDE integration ● “Manual” installation showstopper ● Marketplaces integration ○ Account creation hell ○ Specific terminology/build
  • 13. Technical advice - IDE integration Eclipse Desktop (1/2) ● LSP4E ● (Process)StreamConnectionProvider ● Content-type association ● Generic text editor only! ○ No XML LS (with completion) ○ Reuse XML Editor
  • 14. Technical advice - IDE integration Eclipse Desktop (2/2) ● To help development: ○ Configure remote debug possibilities ○ Communication log
  • 15. Technical advice - IDE integration VS Code ● How to launch Java from TypeScript? ○ Java LSP client example, now also Camel Client ● Don’t know yet for writing a test… ● Not friendly with bad request ○ log on stdout → crash!
  • 16. Technical advice - IDE integration Eclipse Che - OpenShift.io ● Easy to write ● Che developers kind enough to validate ● Web-based! ● Requires recompilation ● Hard to test ● Not activated by default ○ Requires changing preference ○ Or to provide a specific “Che stack”
  • 17. Architecture - multi-Language Server ● Several LS on same file? ● How to avoid redundancy? ○ Extension points in a LS? ○ Clients responsible to merge results? ○ Formatting?
  • 18. Demo - State of LSP for Camel
  • 19. Time/resource management ● Half-day per week for 2 developers during 7 months ○ Regularly skipped… ○ But also several hours reading docs ● Communities working on LSP are active
  • 20. In a nutshell ● LSP known only in Eclipse/Tooling world ● Key points: ○ List of potential supported IDEs ○ Demo in one desktop and one web-based IDE ○ Marketplace entries ● Few work weeks to have several IDEs supported ● Plan a bit of time to bootstrap for all wanted IDEs
  • 21. What’s next? ● Implement all of LSP ● Cross-LS… ● Other protocols? ○ Debug Adapter Protocol ○ Creating new project? ○ Graphical server protocol? ● IDE client? ○ Docker ○ LS Marketplace?
  • 22. Want more LSP @EclipseCon? ● Wed 10:45 Implementing Language Servers - the Good, the Bad, the Ugly by Martin Lippert ● Wed 10:45 The future of development tooling: the example of Eclipse Che, Theia and Sirius by Mélanie Bats and Stevan Le Meur ● Wed 16:30 IoT Cloud development with Che by Jens Reimann ● Thur 10:45 sprotty - Graphical Views For Web Applications ● Come chat with me :-)
  • 23. Start writing your Language Server! Aurélien Pupier Senior Software Engineer @apupier
  • 24. Evaluate the Sessions -1 0 +1 Sign in and vote at eclipsecon.org