Adopting language server for apache camel feedback from a java/eclipse plugin developer perspective
https://github.com/camel-tooling/camel-language-server
A brief introduction to Crystal programming language that covers its syntax and macros system briefly. This talk is given on 12/02/2016 at RubyConf Taiwan.
How to contribute textual tooling for apache camel in several id esAurélien Pupier
Apache Camel allows to configure Integration projects using several textual Domain Specific Languages. In this talk, you will learn how tooling is proposed for several IDEs and editors thanks to the Language Server Protocol and its implementation for Apache Camel language. Entry points to allow you to join the party and contribute will be presented.
Evolution or stagnation programming languagesDaniele Esposti
Programming languages evolves with the need to the developers, but not all of them evolves at the same speed and sometimes some languages stays almost the same for decades. Is this a sign of stagnation? Is it possible to evolve a language without breaking retrocompatibility?
This talk will cover how Python and Javascript approached the problem in a radically different way, with their pro and cons and with the consequences on the community.
The main points of this talk are:
* comparation of the new features in both languages
* strategies used to port or run the code on different versions of the language
* impact of the new features and tool on the respective developer’s communities
The intent is to start a constructive discussion about the retrocompatility in Python.
For this talk you don’t need to have a deep knowledge of Python or Javascript.
A brief introduction to Crystal programming language that covers its syntax and macros system briefly. This talk is given on 12/02/2016 at RubyConf Taiwan.
How to contribute textual tooling for apache camel in several id esAurélien Pupier
Apache Camel allows to configure Integration projects using several textual Domain Specific Languages. In this talk, you will learn how tooling is proposed for several IDEs and editors thanks to the Language Server Protocol and its implementation for Apache Camel language. Entry points to allow you to join the party and contribute will be presented.
Evolution or stagnation programming languagesDaniele Esposti
Programming languages evolves with the need to the developers, but not all of them evolves at the same speed and sometimes some languages stays almost the same for decades. Is this a sign of stagnation? Is it possible to evolve a language without breaking retrocompatibility?
This talk will cover how Python and Javascript approached the problem in a radically different way, with their pro and cons and with the consequences on the community.
The main points of this talk are:
* comparation of the new features in both languages
* strategies used to port or run the code on different versions of the language
* impact of the new features and tool on the respective developer’s communities
The intent is to start a constructive discussion about the retrocompatility in Python.
For this talk you don’t need to have a deep knowledge of Python or Javascript.
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Codemotion
Programming languages evolves with the need to the developers, but not all of them evolves at the same speed and sometimes some languages stays almost the same for decades. Is this a sign of stagnation? Is it possible to evolve a language without breaking retrocompatibility? This talk will cover how Python and Javascript approached the problem in a radically different way, with their pro and cons and with the consequences on the community. The main points of this talk are the comparation of the new features in both languages and strategies used to port or run the code on different versions.
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Codemotion
Programming languages evolves with the need to the developers, but not all of them evolves at the same speed and sometimes some languages stays almost the same for decades. Is this a sign of stagnation? Is it possible to evolve a language without breaking retrocompatibility? This talk will cover how Python and Javascript approached the problem in a radically different way, with their pro and cons and with the consequences on the community. The main points of this talk are the comparation of the new features in both languages and strategies used to port or run the code on different versions.
TinyMCE is a well-known JavaScript library for rich text editing. In 2017, we migrated the entire codebase to TypeScript. Find out the tools we used, challenges we faced and the advantages we are now experiencing. Presented by Millie Macdonald, Software Engineer @ Tiny.
Golang from Scala developer’s perspectiveSveta Bozhko
My talk from Functional Vilnius MeetUp #6.
http://www.functionalvilnius.lt/posts/2015-10-03-6th-meetup-announcement.html
Golang is becoming more and more popular. Most likely many of you have heard of its upgraded garbage collector and possibilities to work with lightweight threads – goroutines. Obviously, Golang is quite a good choice for server-side software oriented on a huge load. As Scala backend developer, I am a big fan of functional programming and actor model. Golang seems very promising, but from the first glance, its a totally imperative language. In my speech I’m going to tell about my experiments with Golang and attempt to use it as a functional language.
Do you want to move to DevOps and wondering what languages you should learn? Is Shell scripting the most important language or Python?
Original post: http://www.ravisagar.in/notes/5-important-programming-languages-you-should-learn-devops
Pune PHP User Meet Up : Presented my talk on when and why to use #PHP. What should be the parameters, to opt for #PHP over other languages (or say technology).
Presentation shown by Alexander Kandzior in his OpenCms Days 2014 keynote.
The next major version 9.5 of OpenCms is ready and it’s easier to use than ever!
OpenCms 9.5 finally allows content managers to handle all of their editing tasks directly in the website, without the need to access the “power user” workplace interface.
New features in OpenCms 9.5 also include:
- Nested Containers
- User generated content
- PDF generation
- More options to reuse existing content
- Improved localization of container pages
- Several enhancements in the user interface
- Much better documentation
- An updated responsive demo based on Bootstrap
… and more!
Presentation from the 4th Athens Gophers Meetup.
At a glance we present:
- why we introduced a new language in the organization and why that
was Go
- how we approached the transition
- some of the projects we built in Go
- the challenges we faced and the lessons we learned in the process
[EclipseCon France 2017] Language Server Protocol in actionMickael Istria
The Language Server Protocol in a popular IDE-independent and Language-independent interface to provide and consume language edition services - such as code analysis, completion, hyperlinking... It basically lets the language providers implement the protocol as a server, and the IDEs consume the protocol as a client to have the IDEs presenting the language-specific data without having to know about the language.
This protocol already has multiple successful stories. In this talk we’ll demonstrate:
* How a C# language server can be used in Eclipse IDE (thanks to LSP4E) to provide rich C# edition capabilities
* How a Java language server implemented on top of JDT is integrated into VSCode to have VSCode supporting rich Java edition capabilities
* How you can easily write a language server in Java (with LSP4J) and plug it into Eclipse IDE (with LSP4E) and VSCode and demonstrate how easy it becomes to ship additional features for your language in all tools at once.
LAS16-108: JerryScript and other scripting languages for IoTLinaro
LAS16-108: JerryScript and other scripting languages for IoT
Speakers: Paul Sokolovsky
Date: September 26, 2016
★ Session Description ★
Overview of small-size/low-resource VHLL (very high-level languages)/scripting languages available for embedded/IoT usage (JavaScript, Python, Lua, etc.). Typical/possible usage scenarios and benefits. Challenges of running VHLLs in deeply embedded/very resource-constrained environments. Progress reports on porting JerryScript to Zephyr. (Possibly, architecture comparison of JerryScript and MicroPython).
★ Resources ★
Etherpad: pad.linaro.org/p/las16-108
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-108/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Codemotion
Programming languages evolves with the need to the developers, but not all of them evolves at the same speed and sometimes some languages stays almost the same for decades. Is this a sign of stagnation? Is it possible to evolve a language without breaking retrocompatibility? This talk will cover how Python and Javascript approached the problem in a radically different way, with their pro and cons and with the consequences on the community. The main points of this talk are the comparation of the new features in both languages and strategies used to port or run the code on different versions.
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Codemotion
Programming languages evolves with the need to the developers, but not all of them evolves at the same speed and sometimes some languages stays almost the same for decades. Is this a sign of stagnation? Is it possible to evolve a language without breaking retrocompatibility? This talk will cover how Python and Javascript approached the problem in a radically different way, with their pro and cons and with the consequences on the community. The main points of this talk are the comparation of the new features in both languages and strategies used to port or run the code on different versions.
TinyMCE is a well-known JavaScript library for rich text editing. In 2017, we migrated the entire codebase to TypeScript. Find out the tools we used, challenges we faced and the advantages we are now experiencing. Presented by Millie Macdonald, Software Engineer @ Tiny.
Golang from Scala developer’s perspectiveSveta Bozhko
My talk from Functional Vilnius MeetUp #6.
http://www.functionalvilnius.lt/posts/2015-10-03-6th-meetup-announcement.html
Golang is becoming more and more popular. Most likely many of you have heard of its upgraded garbage collector and possibilities to work with lightweight threads – goroutines. Obviously, Golang is quite a good choice for server-side software oriented on a huge load. As Scala backend developer, I am a big fan of functional programming and actor model. Golang seems very promising, but from the first glance, its a totally imperative language. In my speech I’m going to tell about my experiments with Golang and attempt to use it as a functional language.
Do you want to move to DevOps and wondering what languages you should learn? Is Shell scripting the most important language or Python?
Original post: http://www.ravisagar.in/notes/5-important-programming-languages-you-should-learn-devops
Pune PHP User Meet Up : Presented my talk on when and why to use #PHP. What should be the parameters, to opt for #PHP over other languages (or say technology).
Presentation shown by Alexander Kandzior in his OpenCms Days 2014 keynote.
The next major version 9.5 of OpenCms is ready and it’s easier to use than ever!
OpenCms 9.5 finally allows content managers to handle all of their editing tasks directly in the website, without the need to access the “power user” workplace interface.
New features in OpenCms 9.5 also include:
- Nested Containers
- User generated content
- PDF generation
- More options to reuse existing content
- Improved localization of container pages
- Several enhancements in the user interface
- Much better documentation
- An updated responsive demo based on Bootstrap
… and more!
Presentation from the 4th Athens Gophers Meetup.
At a glance we present:
- why we introduced a new language in the organization and why that
was Go
- how we approached the transition
- some of the projects we built in Go
- the challenges we faced and the lessons we learned in the process
[EclipseCon France 2017] Language Server Protocol in actionMickael Istria
The Language Server Protocol in a popular IDE-independent and Language-independent interface to provide and consume language edition services - such as code analysis, completion, hyperlinking... It basically lets the language providers implement the protocol as a server, and the IDEs consume the protocol as a client to have the IDEs presenting the language-specific data without having to know about the language.
This protocol already has multiple successful stories. In this talk we’ll demonstrate:
* How a C# language server can be used in Eclipse IDE (thanks to LSP4E) to provide rich C# edition capabilities
* How a Java language server implemented on top of JDT is integrated into VSCode to have VSCode supporting rich Java edition capabilities
* How you can easily write a language server in Java (with LSP4J) and plug it into Eclipse IDE (with LSP4E) and VSCode and demonstrate how easy it becomes to ship additional features for your language in all tools at once.
LAS16-108: JerryScript and other scripting languages for IoTLinaro
LAS16-108: JerryScript and other scripting languages for IoT
Speakers: Paul Sokolovsky
Date: September 26, 2016
★ Session Description ★
Overview of small-size/low-resource VHLL (very high-level languages)/scripting languages available for embedded/IoT usage (JavaScript, Python, Lua, etc.). Typical/possible usage scenarios and benefits. Challenges of running VHLLs in deeply embedded/very resource-constrained environments. Progress reports on porting JerryScript to Zephyr. (Possibly, architecture comparison of JerryScript and MicroPython).
★ Resources ★
Etherpad: pad.linaro.org/p/las16-108
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-108/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
Instant developer onboarding with self contained repositoriesYshay Yaacobi
Slide from my talk on "Instant developer onboarding with self-contained repositories".
https://sched.co/l9yG
Code examples on:
https://github.com/Yshayy/self-contained-repositories
Conference Recordings will be added once it will be public
While the Language Server Protocol (LSP) has quickly become an industry standard in the devtools domain and Eclipse IDE promptly got support for it with the Eclipse LSP4J and LSP4E projects, LSP is only targetting the code edition activity. However, code edition is just one activity amongst others for a developer, and some would argue that it's not the main use-case that justifies usage of an IDE over a simple text editor.
One of the most important activity (where IDEs are usually better than other tools) for a developer is debugging: watching a program run, digging hints of what could be wrong, experimenting things against the running application... Similarly to the Language Server Protocol, as part of Visual Studio Code, a JSON-based language and tool agnostic protocol was created to support typical debug interactions and facilitate the binding of a devtool with a debugger. Eclipse LSP4J and LSP4E enabled in early 2018 support for this Debug Adapter Protocol in Eclipse IDE.
Eclipse aCute, providing an IDE for C# and .NET Core, managed to use this Debug Adapter Protocol and the existing integrations with Eclipse IDE to relatively easily and quickly integrate support for netcoredbg, an open-source debugger for .NET Core.
In this presentation, we'll explain how the Debug Adapter Protocol works, how LSP4J can be used to support it in any Java application (either a debugger or a client), how LSP4E can be used to support it out-of-the-box in Eclipse IDE, and we'll use aCute example to show how plugin providers can extend LSP4E and provide the final steps of a good and simple UX.
Lua as a business logic language in high load applicationIlya Martynov
This report covers our experience building custom HTTP web server used for the delivery of internet advertising. The application design has as one goals finding the right balance between high performance and ease of development. To achieve this goal we are using Lua as a business logic scripting language embedded into C++ application. The report tries to explain how and why we use Lua and how the choice of Lua affects architecture of the application.
Making sense of the front-end, for PHP developersLewiz
The complexity of frontend web development has increased measurably. Gone are the days of jQuery. New frameworks like React and Vue and tools like Webpack are the new deal.
In this talk, we will try to make sense of the current state of front-end development and how it changes how we write backend code. More specifically, we will see how Symfony and Laravel help us in that regard.
With the rise of Docker, we have seen an unprecedented interest in container technologies where small companies and big enterprises bet their future on these technologies. This trend bases on an immense adoption of containers from software developers. And it has been agreed upon that they are considered highly beneficial for modern engineering practices like Agile and DevOps. But there is a new kid in town that proclaims a more radical approach: Serverless or FaaS: Function-As-A-Service. This paradigm suggests that a developer should only write functions and react to events.
The functions are written in high-level programming languages like Javascript, Java or Python, and the underlying compute infrastructure like containers or VMs is transparent to the user. That raises the question: Is the container revolution already dead before it really started? And who now needs container technologies in a serverless world?
In this talk we discuss these questions from both a containers advocate and serverless fanboy viewpoints. We confront these two approaches, show the differences, individual strengths and weaknesses and where they complement each other. This talk will also discuss motivations from different involved parties so that the audience can build their conclusion.
Vaclav Pavlin (Containers & OpenShift guru): Containers will rule the world!.
Matthias Luebken (Developer tools PM): Serverless is the Visual Basic for the cloud-native generation.
HelsinkiJS - Clojurescript for Javascript DevelopersJuho Teperi
Web development is nowadays dominated by many compile to JS languages. ClojureScript is one of such languages. This talk will give overview of ClojureScript ecosystem.
Software developers are always using libraries developed by others. The functions of the libraries are from string processing to task queues. Have you ever considered developing your own software library? This talk is to discuss some issues related to "developing software libraries":
1. What are the benefits of developing a library?
2. What are the usual differences between library and non-library code? Have you heard of mechanism code vs policy code?
3. What are the characteristics of a good library?
4. Where can you easily find opportunities to develop libraries? How to start?
LAS16-209: Finished and Upcoming Projects in LMGLinaro
LAS16-209: Finished and Upcoming Projects in LMG
Speakers: Yongqui Liu, Satish Patel, Bernhard Rosenkränzer
Date: September 27, 2016
★ Session Description ★
This survey of topics covers the engineering output of recent Android related projects in LMG and some future plans. This includes Memory Allocators, Filesystems, LCR news, Work on both gcc and clang based toolchains, Increased participation in upstream development as well as a quick overview of some upcoming topics. Kernel possible topics: Generic Build: where we are at.
★ Resources ★
Etherpad: pad.linaro.org/p/las16-209
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-209/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
SciPipe - A light-weight workflow library inspired by flow-based programmingSamuel Lampa
A presentation of the SciPipe workflow library, written in Go (Golang), inspired by Flow-based programming, at an internal workshop at Uppsala University, Department of Pharmaceutical Biosciences.
The self-service developer is one of my favorite concepts. It holds together the recent innovation in the container and CI/CD space and focuses on the developer experience of Cloud Native platforms.
Webbisauna - ClojureScript for Javascript DevelopersJuho Teperi
Web development is nowadays dominated by many compile to JS languages. ClojureScript is one of such languages. This talk will give overview of ClojureScript language and its ecosystem, and attempts to answer following questions:
- Why to use ClojureScript?
- Is ClojureScript production ready?
- How is the build tooling?
Why and how to leverage apache camel integration framework in your io t archi...Aurélien Pupier
Apache Camel framework is one of the most used Integration framework in middleware field. What about reusing it in your IoT infrastructure?
During the talk, I will explain the benefits of Apache Camel and how to leverage them in your IoT infrastructure, from gateways in Eclipse Kura to cloud in Eclipse Kapua.
Master your integration projects on premise and in the cloud with fuse toolingAurélien Pupier
Fuse Tooling is a powerful Integrated Development Environment for integrations projects based on Apache Camel and Jboss Fuse. During the talk, I will show the best features of Fuse Tooling which had a reworked UI this year:
how to graphically defines Camel routes
how to graphically debug your Camel routes
how to leverage the IDE with OpenShift as target platform
Apache Camel is an integration framework based on Enterprise Integration Patterns. It empowers developers to define routing and mediation rules. JBoss Fuse is the productized version of Apache Camel provided by Red Hat. It helps you to configure and deploy in tested and supported environments. Environments that can be on-premise or in the Cloud.
Time to build and test results 3x faster - how we did itAurélien Pupier
After one year of regular work on our build mechanism and Continuous Integration infrastructure, we are able to provide RCP products, along with their complete test suite, more than 3 times faster than before.
And guess what, we are using less physical resources.
The path to this result was quite long and sometimes tedious, but we finally managed it. I will share our experience and provide tips so you can speed up your own build. I will also mention which improvements are coming.
I will explain the methods used to identify bottlenecks and which technical solutions we applied (and the ones we dropped). This talk will go through the usage and possibilities brought by Tycho, Target Platforms, Hudson/Jenkins with some of its plugins and a Maven Repository Manager.
Take advantage of memory analyzer tool inside your continuous integrationAurélien Pupier
During this presentation, I will demonstrate how to generate an automatic custom memory report integrated in a Continuous Integration. It detects memory leaks very early in development process and provides a preliminary report.
The Bonitasoft team implemented such a solution with the Hudson continuous integration server and the Memory Analyzer Tool (MAT) on our Eclipse RCP application. This talk will be an opportunity to share our experience and present the steps to achieved the goal:
Take a Heap Dump programmatically at the end of Test execution
Create a custom MAT report or use the ones provided
Launch MAT reports analysis on the Heap Dump
Integrate reports analysis in the Hudson/Jenkins job
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)Aurélien Pupier
Describing Tools and Methodologies used and that will be used to develop the GMF editors of Bonita Open Solution Studio. It is an eclipse RCP application awarded "Best Modeling Application" during Eclipse Community Awards 2011 and was finalists in "Best Application" category during Eclipse Community Awards 2012.
Saudi Arabia stands as a titan in the global energy landscape, renowned for its abundant oil and gas resources. It's the largest exporter of petroleum and holds some of the world's most significant reserves. Let's delve into the top 10 oil and gas projects shaping Saudi Arabia's energy future in 2024.
Explore the innovative world of trenchless pipe repair with our comprehensive guide, "The Benefits and Techniques of Trenchless Pipe Repair." This document delves into the modern methods of repairing underground pipes without the need for extensive excavation, highlighting the numerous advantages and the latest techniques used in the industry.
Learn about the cost savings, reduced environmental impact, and minimal disruption associated with trenchless technology. Discover detailed explanations of popular techniques such as pipe bursting, cured-in-place pipe (CIPP) lining, and directional drilling. Understand how these methods can be applied to various types of infrastructure, from residential plumbing to large-scale municipal systems.
Ideal for homeowners, contractors, engineers, and anyone interested in modern plumbing solutions, this guide provides valuable insights into why trenchless pipe repair is becoming the preferred choice for pipe rehabilitation. Stay informed about the latest advancements and best practices in the field.
Final project report on grocery store management system..pdfKamal Acharya
In today’s fast-changing business environment, it’s extremely important to be able to respond to client needs in the most effective and timely manner. If your customers wish to see your business online and have instant access to your products or services.
Online Grocery Store is an e-commerce website, which retails various grocery products. This project allows viewing various products available enables registered users to purchase desired products instantly using Paytm, UPI payment processor (Instant Pay) and also can place order by using Cash on Delivery (Pay Later) option. This project provides an easy access to Administrators and Managers to view orders placed using Pay Later and Instant Pay options.
In order to develop an e-commerce website, a number of Technologies must be studied and understood. These include multi-tiered architecture, server and client-side scripting techniques, implementation technologies, programming language (such as PHP, HTML, CSS, JavaScript) and MySQL relational databases. This is a project with the objective to develop a basic website where a consumer is provided with a shopping cart website and also to know about the technologies used to develop such a website.
This document will discuss each of the underlying technologies to create and implement an e- commerce website.
Overview of the fundamental roles in Hydropower generation and the components involved in wider Electrical Engineering.
This paper presents the design and construction of hydroelectric dams from the hydrologist’s survey of the valley before construction, all aspects and involved disciplines, fluid dynamics, structural engineering, generation and mains frequency regulation to the very transmission of power through the network in the United Kingdom.
Author: Robbie Edward Sayers
Collaborators and co editors: Charlie Sims and Connor Healey.
(C) 2024 Robbie E. Sayers
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)MdTanvirMahtab2
This presentation is about the working procedure of Shahjalal Fertilizer Company Limited (SFCL). A Govt. owned Company of Bangladesh Chemical Industries Corporation under Ministry of Industries.
Immunizing Image Classifiers Against Localized Adversary Attacksgerogepatton
This paper addresses the vulnerability of deep learning models, particularly convolutional neural networks
(CNN)s, to adversarial attacks and presents a proactive training technique designed to counter them. We
introduce a novel volumization algorithm, which transforms 2D images into 3D volumetric representations.
When combined with 3D convolution and deep curriculum learning optimization (CLO), itsignificantly improves
the immunity of models against localized universal attacks by up to 40%. We evaluate our proposed approach
using contemporary CNN architectures and the modified Canadian Institute for Advanced Research (CIFAR-10
and CIFAR-100) and ImageNet Large Scale Visual Recognition Challenge (ILSVRC12) datasets, showcasing
accuracy improvements over previous techniques. The results indicate that the combination of the volumetric
input and curriculum learning holds significant promise for mitigating adversarial attacks without necessitating
adversary training.
Adopting language server for apache camel feedback from a java/Eclipse plugin developer perspective
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?
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