Understanding the memory use of an application is challenging. A subtle logic error can result in listeners never being disposed, ultimately leading to the dreaded OutOfMemory error. Even if your application is properly disposing of all unused objects, it may still be requiring 10 or 100 times more memory than necessary.
Memory leaks in Java can be detected through the analysis of heap dumps. The first step is to create an HPROF heap dump from the running Java application. [...] I found that creating the dump for a running Apache Tomcat on Windows is not as trivial as it seems, especially if Tomcat is run as a windows service.
Defining APIs is crucial to maintaining modularity. OSGi defines the concepts necessary for API definition such as a service concept and package visibility. However, pure OSGi is not enough to really maintain an API and its potential usages. There are several cases in an API definition where it is required to do more than restrict the accessibility to packages. [...]
API crafting and maintaining is a pain in the ass. Just ask any Eclipse committer who has:
• broken API by introducing a subtle change to a class
• forgotten to rev version numbers when adding new API
• accidentally revved version numbers when not adding new API maintained IWorkbenchPart3, ITextViewerExtension7, IContext2… etc…
As usual in Eclipse, files are validated automatically when they change.
If you're using Eclipse and sharing your code (and issues) on GitHub, you really should take a look at the variety of Eclipse Plugins for working with Git. The most obvious plugin is EGit, the Eclipse Git Plugin. EGit (and the underlying JGit) plugins have improved a great deal over the past 2-3 years.
There are a number of different ways to grab changes from a remote Git repository and bring them into your local repository. The most common way is to simply do a pull. By default this will do a ‘fetch-and-merge‘, but you can configure this to do a ‘fetch-and-rebase‘ instead. [...]
When new developers join a team, or existing developers move quickly between projects, setting up a development environment can be a real headache. Most software teams will (hopefully) share a set of instructions on a wiki that include: [...]
EGit is the Git integration for the Eclipse IDE. This Tutorial describes the basic use cases for EGit. It requires only some basic knowledge about the Git processes. Please help us to keep this tutorial up-to-date by reporting any issues or questions. The tutorial is now available as a downloadable PDF. [...]
Build engineering was and is quite a challenge for many of the projects I worked on. For pure Java projects I have often used Maven for building, but for Eclipse/OSGi-based it never really worked out well for us. One of the main reasons was that the information Maven requires to build an artifact (aka plugin/bundle) has significant overlap [...]
When it comes to Code Coverage and Java, you can’t ignore JaCoCo. JaCoCo was created by Marc Hoffmann based on the lessons learned using the popular Emma coverage tool. There are plenty of projects using JaCoCo but there was one missing piece – integrating the coverage report into the automated build. Thanks to the Jenkins JaCoCo Plugin, this is no longer a problem.
I just pushed a template for creating AspectJ applications with Tycho. You’ll find it on github.
It contains four infrastructure projects: one defines an OSGi command to calculate faculties, another contains an aspect to measure the duration of the calculation [...]
Recently I played around a little with Tycho because we evaluated it for the use in the RTP project. As a test case, I decided to try to build a RAP application with Tycho. With building I mean compiling and packaging the artifacts into a WAR file in order to deploy them on a Tomcat or another Servlet Container.
In the past I have said some unkind words about about maven’s pom.xml format. My aversion to xml heavy configuration has drawn me to more lightweight approaches to build systems, like gradle. At the same time, I was intrigued that a tool like maven is seeing such a widespread use despite its shortcomings. [...] I figured there might be some tooling available to help ease the pain.
Need a workshop or remote support? Any missing features in the Open-Source that you would like to see implemented?
Check out our Developer Support Packages.
Some of you may have seen Yoxos 5 at EclipseCon 2011. For those who aren’t familiar with it, Yoxos 5 is a tool that enables the creation of a profile that describes your Eclipse installation. Another developer can start the same Eclipse installation by clicking on a .yoxos file. Yoxos will download and install all necessary plugins, set the preferences, [...]
p2 is a provisioning platform for Eclipse / Equinox based applications. The p2 platform itself is highly modular, meaning it can be carved and assembled in different ways depending on the task at hand. One such separation is the split between the Metadata (description of what can be installed) and the Artifacts (actual bytes that are laid down on disk). [...]
Ever wondered how you can create a p2 repository from an arbitrary bunch of pre-built Eclipse bundles and features? You might also be wondering why you would want to do that.
If you're working on a mission-critical system, it's crucial to know that the right people are on call when you need help.
Production Support from EclipseSource experts helps ensure that your system is running smoothly like it should.
This tutorial gives an introduction to the UI testing tool Q7. Q7 is focused on testing Eclipse plugins and Eclipse RCP applications. The tutorial introduces all the basic steps to evaluate Q7 for your own project. Why UI Testing? The higher-level the test, the more difficult it usually is to automate it. [...]
A few weeks ago Google announced their WindowBuilder contribution to the Eclipse Foundation. The WindowBuilder is a first class visual editor for creating UIs and will be maintained by Google. It contains an Editor for three UI toolkits: [...]
When you run JUnit tests that open windows and dialogs, all these windows pop up on your screen like fireworks, making your desktop unusable for minutes.
If you work on Linux, there’s an easy way to get rid of all the flickering. Simply redirect your UI tests onto a virtual screen.
From time to time, I’m in the situation when I want to suggest a UI change or even try to come up with a completely new UI. While I love programming, it may be easier in these situations to just “sketch” the idea instead of really getting your feet wet. As many people asked me what I use for UI sketches, I thought I should share the tool with you. It's called WireframeSketcher. [...]
At EclipseSource, we’ve been helping to creating the Eclipse Packages for over 5 years now. During that time we’ve learned a lot about building tools for developers. One thing we’ve learned is that every development team is different, and a one-size-fits-all approach doesn’t work. You want your Eclipse, your way! [...]
As a software developer, I find myself constantly moving between projects. From working on both the Yoxos Client and Server Applications, to working on Eclipse and p2, to hacking on personal GitHub projects, things are always changing. Sometimes I put some work on the shelf where it might sit for weeks. [...]
Packaging a customized IDE for the benefit of your users:
Recently we released a developer preview of Tabris, our new mobile, cross-platform, server-side, app framework. Using Tabris as an example, I’d like to show you that with Yoxos, it's just a matter of minutes in order to define and publish a complete Eclipse-based IDE around your own software platform or framework.
The Eclipse Packaging Project defines pre-configured Eclipse distributions. If you are developing in C/C++, there’s a package for that. If you need to create RCP applications, there’s a package for that. Using p2 or the Eclipse Market Place you can customize your install until your heart’s content. However, each time you download a new package [...]
Back in the old days, maintaining an Eclipse installation was easy. But the times have changed. The number of useful plug-ins increased, and developers use different plug-ins in different workspaces.
Imagine you had a system where each plug-in you use is downloaded just once and reused whenever you need it for a new Eclipse IDE.
I have tons of Eclipse workspaces. The last time I counted it was around 24, but it actually changes on a daily basis. With some of my workspaces I want to have a similar IDE as with others, but some IDEs require special plug-ins. A while ago, as I still unzipped Eclipse-downloads, this was a huge pain. Every time I wanted to work in a specific workspace I had to remember which IDE I used for what [...]
As many of you know, Eclipse Kepler is coming out on June 26th 2013. As we prepare for this release, we will be pushing some of the release candidates (and eventually the final release) to our production servers. However, for a variety of reasons you may not be ready to upgrade. Maybe the plug-ins you need are not available with Kepler yet; [...]
Yoxos is a great way to manage your Eclipse installs. With over 2,000 plug-ins to choose from, you can create your Eclipse, your way. But what if your favorite plug-in is not available in the Yoxos Distribution? I am happy to announce that starting today, you can add your own update sites to a Yoxos Team profile, and use those plug-ins in your Eclipse install. [...]
Getting a new developer up-to-speed can take time. First they need to download the development tools and configure their environment. While some teams use pre-configured packages, like the EPP Packages, most teams extend these tools with extra plug-ins or custom configurations. Many of these have additional dependencies [...]
Using Yoxos profiles to manage your Eclipse installs is an easy way to get your tools, your way. However, you usually don't want to create the profile from scratch. I’m happy to announce that starting today, you can create and download your custom Yoxos profile directly from the Yoxos website. Simply login, go to ‘Create a new Yoxos profile‘ and choose from over 2,000 Eclipse plug-ins.
Yoxos not only provides you with a way to pool all your plugins in a single directory, but you can also configure that location. Eclipse/p2 bundle pooling means that different applications (different Eclipse configurations for example) can share the same set of bundles. This saves both time and disk-space as you don’t need to download [...]
Writing JUnit Tests for an application is always a good thing. Writing tests for a Tabris or RAP application for the first time seems more challenging: You might encounter an “java.lang.IllegalStateException: No context available outside of the request processing.” exception while running the tests.[...]
EasyMock is a powerful framework to create mock objects to use in Java JUnit tests. When used in an OSGi environment (e.g. to write Eclipse PDE tests), the creation of class extensions can cause trouble. This post describes a problematic use case and possible solutions.
It has been almost a year since the last restfuse news. In the meantime restfuse was adopted by a lot of individuals and companies. Since the last release the development continued on github and made it now worthwhile to publish an update. Last week we released restfuse 1.1.1. Some noteworthy things are [...]
JUnit and Eclipse are a great combination, but one thing that I missed every time I worked with JUnit4 was the code templates. Currently, Eclipse ships with pre-defined templates for JUnit3 but not for JUnit4. So, I wrote three basic JUnit4 templates that can be imported from the “Templates” Preference Page. [...]
For several projects at EclipseSource we are creating REST APIs. I’m involved in most of them and there is one thing that bothers me with every project. That is, testing. I mean, of course we are writing our unit tests first and we mock our services to get fast unit tests, but at some point you also have to make sure that [...]
I wanted to share something I learned today about JUnit. Some of you may know this, but it was news to me. My triggering problem was that I was writing some unit-tests which required OSGi to be started up. All my other tests were plain (i.e. non-OSGi) tests. Since I didn’t want to suffer from the startup delay [...]
You might have seen me waving and moving around a lot recently during presentations at Democamps and during my talks at EclipseCon’s. The reason is not a new style in giving talks, it is the topic. The goal of the Jnect project is to connect the Microsoft Kinect SDK with Eclipse/Java. [...]
As tool developers — building the Best Integrated Development Environment (Eclipse) — we need to hold ourselves to higher standards. We cannot be designing future IDEs based solely on what works well for me. [...]