Using Eclipse
- 1What is Eclipse?(111w~1m)
- 2Using Eclipse as a Java IDE(136w~1m)
- 3Unanswered questions(316w~2m)
- 4Developing Eclipse(246w~2m)
- 5Contributing to Eclipse(815w~5m)
- 6How do I make a Mylyn task repository connector?(196w~1m)
- 7How do we get paid to develop Eclipse?(83w~1m)
- 8Applications(16w~1m)
- 9Where is the Eclipse Provisioning perspective?(47w~1m)
- 10What can the OSGi Console do to a running Eclipse IDE?(117w~1m)
- 11Eclipse ontology(15w~1m)
- 12We can add chat to our IDE by ECF?(20w~1m)
- 13How to create custom Eclipse distribution/product?(84w~1m)
- 14Mailing lists(126w~1m)
- 15Eclipse vs IntelliJ IDEA(35w~1m)
- 16Developing Prolog in Eclipse(13w~1m)
1What is Eclipse?
Not to be confused:
- Eclipse Foundation
- Eclipse Platform
- Eclipse SDK (Platform + JDT + PDE)
- Eclipse IDEs (Platform + plugins such as JDT)
- Eclipse p2 is used to "Install New Software".
- Eclipse working groups
- Eclipse projects
Wikipedia explains Eclipse better than Eclipse explains itself?1
What projects are in the Eclipse Foundation? Wikipedia answers this better than Eclipse itself does.2
<2019-06-11> No Eclipse events in Asia. Eclipse events seem to be mostly in Europe.
Eclipse is like Emacs but in Java instead of Elisp.
"The original vision of Eclipse was to accelerate the creation of IDEs"3
I find the code unpleasant. For example, WorkbenchPage, why is openEditors not implemented in terms of openEditor? Also, the p2 API can be made easier to use.
2Using Eclipse as a Java IDE
- 2.1How to use Eclipse?(45w~1m)
- 2.2Keyboard shortcuts(45w~1m)
- 2.3Why do we need IDE?(39w~1m)
- 2.4Eclipse for Java development(5w~1m)
2.1How to use Eclipse?
Download Eclipse SDK (not to be confused with Eclipse Platform).
<2019-06-11> Eclipse 4.11 does not work on Ubuntu 14.04, but this is fixed in Eclipse 4.12.4
Switch View / Editor / Window / Tab ? What's it called? What are the things/ontologies? Workbench? Workspace?
2.2Keyboard shortcuts
The mother of all shortcuts:
- Shift+Ctrl+L: Show Keyboard Shortcuts
- Ctrl+3: Quick Access
- Alt+Shift+Q: Show View
Perspectives:
- Ctrl+F8: Next Perspective
- Ctrl+Shift+F8: Previous Perspective
- Ctrl+O: Quick Outline, like IntelliJ IDEA Ctrl+F12
Mylyn5
- Ctrl+F9: "Activate Task" dialog
- Ctrl+F12: "Open Task" dialog
- Shift+Alt+Q K: Open "Task List" View
- Shift+Ctrl+F9: Deactivate Task
Are there shortcuts for these?
- Open a Perspective
Learn Eclipse keyboard shortcuts?6
2.3Why do we need IDE?
To keep complexity under control, because we have extremely limited capacity for complexity.
You don't need IDE for small programs (hundreds of lines of code, or maybe even in the low thousands of lines of code).
2.4Eclipse for Java development
3Unanswered questions
- 3.1Some unanswered questions(127w~1m)
- 3.2Is a "Foundation" a software graveyard?(125w~1m)
- 3.3Can JDK 11 run Eclipse faster than JDK 8?(34w~1m)
- 3.4What can the OSGi Console do?(6w~1m)
- 3.5e4?(1w~1m)
- 3.6JFace?(1w~1m)
- 3.7JDT UI(2w~1m)
- 3.8If I want to make my own IDE, should I use DLTK or Xtext or both?(16w~1m)
- 3.9Run OSGi framework from command line(6w~1m)
- 3.10Using Eclipse to develop Eclipse?(6w~1m)
3.1Some unanswered questions
- How to make Eclipse feel more like IntelliJ IDEA?
- What is the best way to navigate?
- How do I see the summary of all Eclipse projects? Where is the data source?
How do I ensure that all Eclipse installations at different machines use the same coding style for my project?
- Export my Eclipse preferences?
- Are per-project settings carried to different machines?
- Write a plugin to enforce that?
How do I import a Maven project (one with pom.xml)?
Who is the target audience of the eclipse.org website? "Eclipse.org always seemed more interested in promoting the Eclipse Foundation than the IDE. The website feels like a collection of independent projects which are not maintained."9 Some counter-arguments?101112
Why does Eclipse "Toggle Comment" have three shortcuts: Ctrl+/, Ctrl+7, Shift+Ctrl+C? Who is in charge of designing the user experience?
3.2Is a "Foundation" a software graveyard?
"A private actor giving away software to a foundation might be interpreted in different ways. In this case and despite all reassuring talks around the move, this is not a good sign for the future of Ceylon."13
(JetBrains Kotlin, Red Hat Ceylon, and Eclipse eXtend?)
There seems to be a trend of companies "donating" projects, that they no longer want, to non-profit foundations such as the Eclipse Foundation and the Apache Foundation.
Apache Foundation also has lots of Java projects. What is the difference between Eclipse Foundation and Apache Foundation?
"tl;dr Apache is no longer the place projects go to die and Eclipse is expanding from just IDEs."14
- "there's one thing that a software foundation brings that GitHub can't replicate: a home for intellectual property."
3.3Can JDK 11 run Eclipse faster than JDK 8?
Git 2.20.0 (2019) is faster than the Git that comes with Debian 9 (2017) which is faster than the Git that comes with Ubuntu 14.04 (2014).
3.4What can the OSGi Console do?
3.5e4?
https://eclipsesource.com/blogs/2012/05/10/eclipse-4-final-sprint-part-1-the-e4-application-model/
3.6JFace?
https://www.vogella.com/tutorials/EclipseJFace/article.html
3.7JDT UI
https://wiki.eclipse.org/JDT_UI/How_to_Contribute
https://www.eclipse.org/jdt/ui/doc/bug-annotation.php
3.8If I want to make my own IDE, should I use DLTK or Xtext or both?
https://en.wikipedia.org/wiki/Dynamic_Languages_Toolkit
https://en.wikipedia.org/wiki/Xtext
https://jaxenter.com/eclipse-dynamic-language-toolkit-100025.html
3.9Run OSGi framework from command line
https://stackoverflow.com/questions/15787916/headless-osgi-framework-from-command-line
3.10Using Eclipse to develop Eclipse?
Multiple profiles?15
4Developing Eclipse
The "Platform Plug-in Developer Guide" in Help Center16.
4.1How do I install the Platform plugin that I am developing so that it overrides/shadows/replaces the version that comes with Eclipse?
First, make sure that your plugin will not prevent you from booting Eclipse. You can self-host (run another Eclipse instance from your Eclipse instance). As simple selecting a file in your plugin, and then Run > Debug As > Eclipse Application (or press F11 if that is already selected).
Then, use this menu: File > Export > Plug-in Development > Deployable plug-ins and fragments > Install into host. This is in the help that comes with Eclipse: Help > Help Contents > Plug-in Development Environment Guide > Tasks > PDE UI > Export and Install into the Running Host.
How do we know that our plugin is installed?
Help > About > Installation Details. (or Ctrl+3 "ins det")
That feature is very handy: No need to understand P2. If anything breaks, nuke the Eclipse installation, and reinstall everything.
Can't use dropins because it can't override installed plugins.
What if it breaks? It can be reverted.17 But the same page says "Unfortunately, because of p2 design flaws, revert usually doesn't work when you need it." WHAT!?
But it worked for me, but perhaps that's because I try not to be too wild with Eclipse.
Advanced: Creating an update site for your plugin18
4.2How to not block the UI thread
Eclipse Jobs and Background Processing - Tutorial19
There is also an article in the Eclipse wiki but I forgot the URL.
5Contributing to Eclipse
- 5.1What can be contributed, in descending order of importance?(44w~1m)
- 5.2How do we find out whether we and the Foundation are aligned?(404w~3m)
- 5.3How do I know whether a project is not dead?(28w~1m)
- 5.4How to contribute?(122w~1m)
- 5.5What is the Eclipse marketplace?(21w~1m)
- 5.6Build?(12w~1m)
- 5.7Code contribution workflow(131w~1m)
- 5.8Set up Gerrit(27w~1m)
- 5.9For committers(2w~1m)
- 5.10Development tools(30w~1m)
- 5.11The code?(2w~1m)
5.1What can be contributed, in descending order of importance?
What can be contributed?20 Code, documentation, issue report, money, votes for bugs, triaging, committing, moderating, usage?
"Google Summer of Code: Participate and get paid for coding!"21 But I'm not a student. Why is it only for students?
5.2How do we find out whether we and the Foundation are aligned?
What does the Foundation think is important? What is the Foundation's strategy and goals? Are we and the Foundation aligned with each other? What are the economic incentives?
The IDE does not make money?
https://www.eclipse.org/org/councils/roadmap_v6_0/
Strategic focus areas: cloud native Java, IoT and edge, automotive, tools22. "no GPL or AGPL".
"Our community is innovating on the next generation of cloud native developer tools." Does that mean that they will "abandon" the Java IDE?
They are de-emphasizing Java?
They missed the JavaScript boat?23
They are going to focus on Orion and the Web.
"Eclipse tools have historically had a very strong correlation with the Java language. However, with the rapid growth of Rich Internet Application languages and technologies such as JavaScript and Ajax, the Eclipse community must support the requirements of these developers as well. Eclipse will begin to invest in re-tooling the Eclipse platform with the needs of Web developers in mind."
What's with all that IoT? Is that where the money is?
2011 will see another release of the Eclipse 4 stream, Eclipse 4.1. The major goals of this new release include:
- Making it easier to write plug-ins
- Allowing better control over the look of Eclipse based products
- Increasing diversity of contributors to the platform
- Maintaining backward compatibility for API-clean clients
mature = dead?
'Then I read the Eclipse forums and found out that there was a major UI redesign with no automated testing and very little manual testing, and the reason was "unfortunately there's no budget for testing". This was the word of the actual official devs, by the way. They decided to do a massive rewrite without testing. It boggles the mind.'24
<2019-06-23> It has been around for 17 years (since 200125) and is still active as of 2019, and it won't die soon.
Don't invest in some technology that is going to be abandoned 10 years later.
We have two choices:
- Invest in shitty technology that has been around for 20 years and doesn't seem to die any time soon.
- Pick a new rad thing that God knows how long it will survive.
Like it or not, Java is here to stay. Nobody is going to be too eager to rewrite all their legacy code. After all, those legacy code has been working fine.
All code becomes legacy as soon as it is written.26
They will "abandon" the Java IDE; move people to other projects, every bug will be wontfix "Our community is innovating on the next generation of cloud native developer tools."
5.3How do I know whether a project is not dead?
To find whether a project is not dead, look at two things: its Git stats27 and its Bugzilla stats28.
5.4How to contribute?
https://wiki.eclipse.org/Category:How_to_Contribute
What is the code contribution process/workflow?
- component owner
Bug reporting FAQ29:
- "What is the difference between Severity and Priority?"
"If the cost/benefit ratio of a bug does not change, it may remain unaddressed forever."
There are too many issues and too few people to work on them. Committers are overloaded and are under time pressure of their release schedule.
https://wiki.eclipse.org/Development_Resources
How to use Eclipse Bugzilla?32 Life cycle. What conventions? "helpwanted" keyword? What is the difference between "bugday" and "helpwanted"? Which one is for beginner? Issues marked with "bugday" are friendly to absolute beginners. Issues marked with "helpwanted" is the next step.
The list of keywords and their meanings33
5.5What is the Eclipse marketplace?
How do we make money from that? What is being bought and sold? What is being exchanged?
5.6Build?
Build Eclipse Platform (not just the UI) from source code? Build instructions?34
5.7Code contribution workflow
There are two workflows:
- Bugzilla-first (talk first act later)
- Gerrit-first (act first talk later)
If your change is big, discuss it on Bugzilla first.
Use SSH to connect to Gerrit and push experimental commits.35
Must we make a Bugzilla issue before we push to Gerrit for review? Must every Gerrit review have a Bugzilla issue? No.
"Once a Gerrit change set is created, the link to the Gerrit change should be posted on the Bugzilla. If you are using the correct commit format, this is done automatically by the Eclipse infrastructure."36
But what if I just want to test my commits without notifying anyone, because the commits are still sketchy?
After Gerrit, EGit Bot automatically creates a continuous-integration build for the patch set. We can see build errors here before pushing to production and embarrassing ourselves. Cool!
5.8Set up Gerrit
Follow the wiki37.
- Upload SSH public key to Gerrit.38
If you still can't connect, file a bug in "Community > Gerrit"39. Sometimes you can't connect to Gerrit.40
5.9For committers
https://wiki.eclipse.org/Eclipse/Rhythm
5.10Development tools
Install "e4 spies" from the marketplace.41 There are several spies in that package.42
Use Plugin Spy (Shift+Alt+F1) to find where to insert menus, modify Eclipse Platform UI, etc.
Menu Spy (Shift+Alt+F2)
5.11The code?
https://wiki.eclipse.org/Status_Handling_Best_Practices
6How do I make a Mylyn task repository connector?
The official documentation43 is somewhat outdated.
Does the 2009 Mylyn connector crash course44 help?
<2019-06-23> The last news was from 2011.45 Is Mylyn dead? Did it ever catch on?
<2019-06-22> Mylyn has hardly any new developments? The Git commits are rather few?
<2019-06-22> Editing the Wiki requires review. But there does not seem to be any reviewer. I've been waiting for two days and there does not seem to be any approval. Perhaps I should try opening a Bugzilla issue to ask for a Wiki edit review?
It seems that back in 2008–2013 they tried to force-fed Mylyn to developers and it backfired.46
- 6.1Create a plugin(11w~1m)
- 6.2Implement basic repository information(18w~1m)
- 6.3Implement task reader(20w~1m)
- 6.4Create an editor(11w~1m)
- 6.5Implement task writer(5w~1m)
- 6.6Create GUI forms(10w~1m)
- 6.7Add extensions in plugin.xml(22w~1m)
6.1Create a plugin
Open Resource: plugin.xml.
Open "Dependencies" page.
Add dependencies to these bundles:
org.eclipse.core.runtime
org.eclipse.jface
org.eclipse.mylyn.commons.ui
org.eclipse.mylyn.tasks.core
org.eclipse.mylyn.tasks.ui
org.eclipse.ui.forms
org.eclipse.ui.workbench
6.2Implement basic repository information
- Create a subclass of AbstractRepositoryConnector
- Define a static final String field KIND
- Implement getConnectorKind returning KIND
- Implement getLabel
6.3Implement task reader
- Create a subclass of AbstractTaskDataHandler
- Implement initializeTaskData
- Create a subclass of AbstractRepositoryConnector
- These methods should have been in AbstractTaskDataHandler
- Implement getTaskData
- Implement updateTaskFromTaskData
- These methods should have been in AbstractTaskDataHandler
6.4Create an editor
- Create a subclass of AbstractTaskEditorPage
- Create a subclass of AbstractTaskEditorPageFactory
6.5Implement task writer
- In AbstractRepositoryConnector
- Implement canCreateNewTask
6.6Create GUI forms
- Create a subclass of AbstractRepositoryConnectorUi
- Implement getSettingsPage
- Implement getQueryWizard
- Implement getNewTaskWizard
6.7Add extensions in plugin.xml
Add these extensions:
- org.eclipse.mylyn.tasks.ui.repositories
- connectorCore: the qualified name of your subclass of AbstractRepositoryConnector
- connectorUi: the qualified name of your subclass of AbstractRepositoryConnectorUi
7How do we get paid to develop Eclipse?
While still retaining all our IPs?
One way is to be an employee of an Eclipse Foundation member such as RedHat? But what company doesn't have IP assignment?
Can we get paid developing Eclipse?47
no individual bug bounties, too much administrative overhead48
"This was the purpose of FEEP and it wasn't so successful. It added a lot of work on the Foundation bucket and was unfair since effort was focused on the IDE while the community is about much more"49
8Applications
"Technically, an Eclipse application is a plug-in that creates an extension for the extension point org.eclipse.core.runtime.applications."50
9Where is the Eclipse Provisioning perspective?
Install New Software > "Equinox p2, SDK" (org.eclipse.equinox.p2.sdk.feature.group)
Use it carefully, because it may break your Eclipse installation?
(Begin rant.)
The wiki does not seem to answer that very basic question.51
Unanswered question, 200952
Obscure page with the answer53. It contains dangerous deletion scripts. Do not run.
10What can the OSGi Console do to a running Eclipse IDE?
"This article demonstrates how to use the OSGi console and how to extend the console" in Eclipse54.
List some bundles.55
"The Gogo shell, on which the Equinox console is based, […]"56 "Apache Felix Gogo is a subproject of Apache Felix implementing a command line shell for OSGi."57
List of Gogo shell commands58
Console is not a de jure OSGi standard. "Unfortunately [OSGi RFC 147] was never made a standard."59
How does this relate with Java 9's JShell, BeanShell, etc.?
What is OSGi's ontology? Containers, runtime-environments, frameworks? Same or different?
Internet opinions on Equinox, Felix, and Knoplerfish?6061
Why do we need more two OSGi container implementations from two non-profit organizations? Isn't this a waste of resources?
11Eclipse ontology
Eclipse application is OSGi application
Product = application + branding62
Eclipse workspace = OSGi instance area
12We can add chat to our IDE by ECF?
Eclipse Communication Framework?
"The Eclipse Communication Framework has a Jabber client built in"63?
13How to create custom Eclipse distribution/product?
201464
Given a bundle id, how do I find the update site? Eclipse Oomph?65
PDE build defect?66
Jed Anderson's answer: "Plugins: Finding plugins involves lots of hunting for update sites and then you can never be sure you got the exact right binaries. Sometimes update sites go down, or you lose support for your Eclipse version when the plugin developers release a new update site. One suggestion is to make local copies of update sites to mitigate your exposure to such problems."67
14Mailing lists
It may be more efficient to watch mailing lists than bug trackers.
- Email shows what people are actually working on.
- Email is much faster and more pleasant to use, navigate, and search than Eclipse Bugzilla is.
- When shit happens, it goes to email first, and then the bug tracker later, if it ever touches the bug tracker.
Example of shit happens: I20190520-180568. How the hell are we going to know that, if not from the mailing list? The download page does not say anything?
Do not just download an I-build willy-nilly. Look at the platform-dev mailing list first.
This page69 reachable from this page70 is stale. There are no more S-builds. There are only R-builds and I-builds now.
platform-dev71
pde-dev72
jdt-dev73
The question: When should we use email, and when should we use bug tracker?
15Eclipse vs IntelliJ IDEA
I used IDEA 2018 and Eclipse 2019.
- Eclipse starts faster and uses less RAM. Perhaps this is because Eclipse indexes less eagerly than IDEA does.
- IDEA has better navigation, autocompletion/intellisense/content-assist, and editor tab behavior.
16Developing Prolog in Eclipse
Several options:
Uni-Bonn PDT seems more mature.
https://www.eclipse.org/org/councils/roadmap_v6_0/themes60.php↩
https://stackoverflow.com/questions/1986195/eclipse-list-of-default-keyboard-shortcuts↩
https://www.vogella.com/tutorials/EclipseMaven/article.html↩
https://www.reddit.com/r/programming/comments/52mcf3/the_fall_of_eclipse/↩
'this started with a simple but brilliant idea JetBrains developers had: "disk space is dirt cheap, let's use 1-2 GB of it to store index, so that autocompletion could work lightining fast"' https://news.ycombinator.com/item?id=10273849↩
https://dzone.com/articles/the-rise-and-fall-of-jvm-languages↩
http://insightfullogic.com/2013/Oct/12/resurgence-apache-and-eclipse/↩
https://stackoverflow.com/questions/5856735/multiple-eclipse-profiles↩
https://wiki.eclipse.org/FAQ_Revert_an_Update_or_Installation_with_p2↩
https://www.vogella.com/tutorials/EclipsePlugin/article.html#exercise-create-an-update-site-your-plug-in↩
https://www.eclipse.org/membership/documents/eclipse-foundation-overview.pdf↩
https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=blocker&list_id=18791338&priority=P5&query_format=advanced↩
https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=enhancement&list_id=18791337&priority=P1&query_format=advanced↩
https://wiki.eclipse.org/Development_Resources/HOWTO/Bugzilla_Use↩
https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&component=Gerrit↩
https://www.vogella.com/tutorials/EclipsePlatformDevelopment/article.html#eclipse_ide_spies↩
https://wiki.eclipse.org/Mylyn/Integrator_Reference#Tasks_API↩
http://mirror.rise.ph/eclipse//mylyn/docs/2009-03-mylyn-connector-crash-course-talk.pdf↩
http://paranoid-engineering.blogspot.com/2008/07/what-is-eclipse-mylyn-anyway.html↩
https://wiki.eclipse.org/FAQ_What_is_an_Eclipse_application%3F↩
https://www.eclipse.org/forums/index.php?t=tree&th=40275&goto=130850&↩
https://wiki.eclipse.org/Starting_Eclipse_Commandline_With_Equinox_Launcher/p2_Admin_UI↩
https://www.ibm.com/developerworks/library/os-ecl-osgiconsole/index.html↩
https://www.javaworld.com/article/2077837/java-se-hello-osgi-part-1-bundles-for-beginners.html?page=3↩
https://help.eclipse.org/2019-03/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fconsole_shell.htm↩
https://felix.apache.org/documentation/subprojects/apache-felix-gogo.html↩
https://felix.apache.org/documentation/subprojects/apache-felix-gogo.html↩
https://felix.apache.org/documentation/subprojects/apache-felix-gogo.html↩
https://stackoverflow.com/questions/36276175/osgi-container-equinox-vs-apache-felix-inside-apache-karaf↩
https://www.quora.com/What-are-the-pros-and-cons-of-using-Apache-Felix-versus-Knopflerfish-as-OSGI-framework↩
https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html↩
https://stackoverflow.com/questions/12083285/chat-for-eclipse-ide-in-ubuntu↩
https://martijndashorst.com/blog/2014/07/07/custom-eclipse-luna↩
https://wiki.eclipse.org/Eclipse_Oomph_Authoring#How_to_find_a_P2_repository_at_Eclipse_using_the_Repository_Explorer↩
https://wiki.eclipse.org/Platform_Releng/Common_build_issues↩
https://stackoverflow.com/questions/351373/creating-an-eclipse-distribution↩
https://download.eclipse.org/eclipse/downloads/build_types.html↩
https://marketplace.eclipse.org/content/prolog-development-tools-prodt↩