Thursday 12 March 2015

Eclipse Having a Slow Day? Speed it up in a Few Clicks!

Eclipse is the market leading IDE of choice for Java developers. It’s a rich featured IDE which makes developing code in Java super simple. However, we’ve all at some point said or thought to ourselves, “Wow, my Eclipse is slow today, what’s it doing?”. To be honest, it might be working on a bunch of tasks that event the Eclipse foundation aren’t sure about, but some of which we can explain to you, and eliminate for you so that your Eclipse can run faster, just like when you first unwrapped it.

Oh by the way, we’ve created an Eclipse plugin, available for free, which configures Eclipse automatically for you. It does everything we mention in this blog for you, and even tells you how much faster you’ve become! It's called Optimizer for Eclipse and you can check it out here. Oh and how about these awesome graphic that our design team did for us - Jetpack for Eclipse, Whoooosh!

How can I fix it?

Here are the topics which are the typical culprits when working out what might be slow on your Eclipse environment.
  • Insufficient memory allocation 
  • Class verification overhead 
  • Excessive indexes and history 
  • Obsolete or slow JDK 
  • Eclipse being out of date 
  • Lengthy build and redeploy times 
Each of these areas can afflict different amounts of pain to different developers, based on how long you’ve used the installation for, your type and number of projects. Let’s go through each one individually and show you how you can fix them. Remember, your milage may vary.

Insufficient memory allocation

This might seem obvious, but Java applications are rarely tuned with reasonable Java memory settings from the outset and you’d be well advised to change yours to reduce constant heap expansion which really slows general startup and running down. Your settings will of course depend on your detailed environment, but here are some suggested settings which will give you a much more performant environment from the outset:


There’s also a +UseParallelGC flag used to dictate which garbage collector strategy to use. This strategy maximises the garbage collection pause, meaning the time between when garbage collection is invoked, while keeping the memory footprint low

There’s no need to enter these in manually yourself, let the free Optimizer for Eclipse plugin do it for you!

Class verification overhead

Class verification is where the JVM sifts through your class files when they’re loaded and verifies that class data is not corrupt or invalid. This is only really important if you’re manipulating byte code anyway. Plugins also go through the same checks and this can be a big overhead. We’re talking 10-20% startup improvement. So how can you fix it? Well, you need to use the -Xverify:none option on your JVM, which disables class verification. Or just click the relevant button on the Optimizer for Eclipse plugin and let us do it for you!

Excessive indexes and history

I remember being at school, sitting in my history class thinking... Wow, this is incredibly boring. Well, Eclipse history is just as boring, and it has the same effect too. It manages to make time feel longer than it actually is. Eclipse stores a bunch of info in indexes and history which build up over time. It stores them in two directories as follows:

{workspace path}/.metadata/.plugins/org.eclipse.jdt.core

{workspace path}/.metadata/.plugins/org.eclipse.core.resources/.history

Eclipse spends a lot of time going through these files and if you have excessive build up in these directories, you could be experiencing a lot of churn around start up and general running. It’s important to clean up your history and indexes periodically. Optimizer for Eclipse will clear this for you and remind you when it thinks you need to give it a spring clean again.

Obsolete or slow JDK

The latest version of Java available today is version 8. You know that right? Thought so, just checking. Big performance improvements are made in each version of Java when new versions are released and it just makes sense to upgrade, if possible. Of the available (non-beta) Java releases out today, the Oracle JDK looks to be the most performant and so is recommended for use with Eclipse.

Eclipse being out of date

There are a number of reasons why being on a recent driver of Eclipse is important. Firstly, and least importantly, it’s super shiny and you’ll make all your friends and colleagues feel jealous and old fashioned when they realise their Eclipse version isn’t named after a popular chocolate bar. Secondly and more importantly, the Eclipse foundation do put a lot of work in to make Eclipse more performant, so you may as well make use of these enhancements in the newer drivers. Plugins tend to be written and updated for the more recent versions, so you’ll soon potentially find yourself in a poorly performing environment, and remember, not all plugin updates will even support a lot of the older versions of Eclipse. Obviously, if you’re running and stuck on a legacy plugin which you depend on, and it doesn’t support a newer version of Eclipse, this may not be an option for you, but this is quite rare.

Lengthy build and redeploy times

We of course know that one of the major pain points when developing applications in Java is having to build, compile, package, restart/redeploy, generate state, ZZzzzzz. And all this before you can even think about testing or seeing your code changes. Well, there’s no need to worry or grow old beyond your years as there is a solution. It wears a cape, and goes by the name of JRebel. A tool which has a deep integration with Java Classloaders, application servers and Java frameworks that allow you to instantly reload your code changes! You can learn more about the tool on the JRebel product pages, and either install directly through the marketplace, or via the Optimizer for Eclipse plugin. (*Note* JRebel does of course work on all the other major IDEs too!)

If you want to try out the Optimizer for Eclipse tool, which does much of what we’ve talked about automatically, oh and for free, you can download the Eclipse plugin and give it a go.

Here's a video so you can see it in action.

Originally posted on the RebelLabs blog.

Wednesday 11 March 2015

Announcing Optimizer for Eclipse - A Jetpack for Eclipse

Hello, Simon here - your friendly developer tools aficionado and developer advocate.

Today I am very excited to announce the release of Optimizer for Eclipse. Within the Java ecosystem, Eclipse is still the most widely used IDE. Yet, at the same time, it’s still a pain point for developer productivity. At some point, you have either thought, heard someone else say it or said it yourself: “Wow, my Eclipse is really slow today!”. It has recently been our goal to fix this, allowing Java developers to enjoy coding in Eclipse once again.

Optimizer for Eclipse is a totally free Eclipse plugin that detects and fixes common Eclipse configuration issues. These can add up over time and slow your development environment down to a crawl. These issues include:
  • Insufficient memory allocation
  • Class verification overhead
  • Excessive indexes and history
  • Obsolete or slow JDK
  • Eclipse being out of date
  • Lengthy build and redeploy times
Optimizer for Eclipse evaluates your environment by performing checks on each of these issues. You can then choose which items you wish to fix and allow the plugin to automatically speed up your Eclipse environment. Oh and did we mention it’s free? Yeah, it is - totally free! We caught up with Mike Milinkovich, Executive Director of the Eclipse Foundation:
"We are delighted to have ZeroTurnaround contribute to the Eclipse ecosystem, bringing its robust Java knowledge to the community and making it easier for our users to get the most out of their Eclipse IDE experience with Optimizer for Eclipse"
Have fun and enjoy coding in Eclipse, again! Simon and the Optimizer for Eclipse team

Give it a go and see how much you can speed up your Eclipse environment!

Originally posted on ZeroTurnaround blog 

Wednesday 9 October 2013

vJUG: One small step for JUGs, one giant leap for JUG-kind

What's the problem?

I love community, networking and interactions with other geeks, that's why I married one! :) The greatest thing about Java User Groups (JUGs) isn't just the great content, but also the close knit community, the beers and chatting/networking with like-minded geeks talking tech and sharing ideas. I’m an active leader of the LJC (London JUG) and speak at events as well as organiser for the LJC Open Conference (Happening this Nov 23rd ;) ). I've actually considered moving into London for this community alone. I currently live 45 mins outside, and it takes me over 2 hours round trip to visit or attend a session. With a new(ish) job and family, this really isn't viable. But it got me thinking… there must be hundreds of thousands of Java developers around the world who, just like me, don't have an accessible local Java community. There are likely many others who are close to a local community, but don't meet regularly, or maybe it isn't active at all. So, enough talk, let's see some action!

What's the solution?

I've created a new JUG, the virtualJUG, that's applicable to everyone with an internet connection! It aims to plug the hole for people who either don't live near an active JUG, who want to interact and get some community networking. Well, it's open to people who do live near an active JUG too if they need a tech-top-up! You can join now and stay connected with all the exciting sessions we have in the pipeline, by joining our meetup group right now! Or see what other things we need right now at the bottom of this blog! Of course the vJUG is entirely free to join and use.

So where's the community?

Clearly local JUGs provide a community that the vJUG will never compete with and it's not in our interest to do so! We want to work *with* local JUGs to give their content a better outreach and be the platform through which, if they choose to stream sessions, can be pushed and advertised to the wider Java community. We're already working with the LJC (London JUG) to be the place they live stream their sessions from - cool!

Interaction! Interaction! Interaction!

I'm a hater of a one way dull presentation whether it's being presented live or as an online webinar. So I intend to make sessions as interactive as possible! How? Here are some of my ideas:

Panel discussions - multiple speakers with interactive discussions, possibly based on Q&A from the audience

Attendee driven sessions - live polls to determine the direction of the session, or heavy Q&A sections

IRC chat - chat rooms live throughout the presentation, so attendees can agree, disagree, vent, ask questions and discuss what it happening without needing to stop the session to ask.

Anything else? If you can think of other ideas, let me know!

What types of sessions we be looking to run?

  • Presentations
  • Live Demos
  • Panel discussions
  • Live Streams of JUG meetings

Also by joining the community you'll get links via newsletters collating what we've been up to, what's going on outside the community and what is coming up, as well as which sessions have been most popular, so you can look them up again on Parleys or watch for the first time if you missed them! Essentially, we're your proactive calendar that throws content at you :)

Call to Action!

What are you waiting for? Sign up now!!! But more importantly, please share this blog post far and wide so our community can grow and help others techies around the world.

You own a JUG or community? Awesome, you can help too! Get your members to join up and ask them if they'd like to present at the vJUG! Make your community famous by reaching out, streaming to, or presenting at the vJUG!

We're also looking into options that allow for feature rich video streaming for large numbers of attendees and chat environments, like IRC that outlive the webinar. Let us know if you have any recommendations or suggestions.

Our first sessions will be announced shortly on the meetup site and on twitter!

You can contact me directly on twitter @sjmaple. This is also where I’ll initially be talking about the vJUG and letting you know what’s happening.

Friday 8 February 2013

Shit you talk about while redeploying on a Friday...

We must do everything we can to stop scenes like this happening again... You can avoid this from happening with JRebel.

<Anton> lol
<Simon> was a conclusion ever reached?
<Simon> Did Rebecca Black ever say which seat she would sit in? The back seat or the front seat?
<Luke> she kicks it in the front seat while sitting in the back seat, an impressive feat
<Simon> I'm not even sure what that means but I'm impressed
<Kesh> i think she is actually asking whether she should kick it in the front or back seat
<Kesh> shes gotta make her mind up
<Kesh> which seat she should taaaaaake
<Kesh> its a coming of age tale.
<Luke> truely the song of a generation
<Mike> that deep kesh...
<Kesh> We all know what happens in the back seat
<Sean> yes, rebecca black kicks it there
<Mike> obviously
<Erkki> or she might kick in the front seat
<Greg> She questions "which seat CAN I take?", not should I take. Who is stopping her from taking whatever seat she wants?
<Erkki> the establishment
<Mike> go back and refer to kesh's analysis...
<Simon> whoa! I look away for a couple of minutes and look what you all get up to when unattended :)
<Simon> So, the establishment is stopping her taking her preferred seat - I like it
<Mike> BTW - in the video she chooses the back seat. Just saiyin'
<Ben> Maybe there's a car seat in the back seat.
<Simon> with 2 girl friends - work that one out @Kesh
<Aaron> I'd actually like focus on another part of the song--the hip hop accompaniment and its function as a song within a song, sort of a meta-critique of the teenage experience. Let's focus our attention for a moment on the line "Fast lane--switching lanes!" which is clearly a metaphor for the fast paced unpredictability of the teenage girls life. The use of the car, and the act of speeding on the freeway as the vehicle (so to speak) for delivering the metaphor only enriches it, as the operation of a vehicle is one of the most universal coming of age milemarkers.
<Sean> what about the male rapper who identifies himself as "being rebecca black" ?
<Aaron> @seanroche It all just goes to the universality of the teenage experience that is at the heart of "Friday"
<Simon> She's a genius
<Aaron> Greg and I just had a really interesting discussion about the line and wording of "Gotta get down on Friday"
<Kesh> it's not an option.  rebecca must get down on friday
<Sean> its all about living life in the fast lane and switching lanes. rebecca is trying out different styles and approaches to her young life; which one will she take?
<Aaron> Well not only MUST she, but by not getting down she risks alienation from not only her peers, but her own sense of identity as a teenager
<Kesh> it will all be revealed in my essay, being delivered Monday, titled  Fast Lane: The Maturization of the Teenage Girl in America
<Sean> "We gonna have fun, c'mon, c'mon, y'all" this symbolizes peer pressure which is an unfortunate part of any young teens life
<Aaron> Well that's what's really striking about it. At its core, Friday is a song about the way a teenager (and possibly all of us) synthesize moments of peer pressure and position them in our own psyche as moments of authentic fun
<Simon> You all have such great vision. What's your deep understanding of the line "Fun Fun, Think about Fun, You know what it is. I got this, you got this, my friend is by my right. AAAAAAaaaaaaa"
<Joonas> There was a South Park episode about digging a deep point out of nothing, I think it applies here.
<Simon> This bit -
<Sean> @simon - is that really her friend though? Or is she implying their relationship has no true substance ?
<Aaron> I think "Fun, you know what it is" is one of the great moments of irony in Friday. On one hand you want to think that she is having fun in the car with her friends, but in reality she's reminding us to look beyond moments like this and to remind ourselves what "fun" really is. Maybe the pure fun we had as children, which becomes more and more abstracted and bastardized as we age
<Kesh> that line, IMHO, is rebecca trying to reassure herself that it will all be ok.  she says she's got this, you got this, but do any of us really get this? No, i dont think we do.
<Simon> and AAAAAAaaaaaaa?
<Aaron> A gutteral scream expressing frustration at the levels and layers of irony present in the teenage experience
<Sean> @kesh - think allanis morisette - so talented yet so tortured
<Kesh> as are all true artists
<Aaron> Well, here is the great thing about Alanis, Roche
<Aaron> She was actually able to see the view from outside her own ironic existence as a pop start trying to remain an authentic human. A view expressed in the song "Ironic." Which for my money is one of the great pop songs of the last 30 years.
<Sean> she was a bitch , but still maintained her status as a lover.
<Aaron> Well I think what she shows us is that it's possible to be both and still exist as a single vessel
<Simon> Whoa, back to work, redeploy is done.

Don't forget, joining the rebellion will help you and your friends avoid listening to or talking about Rebecca Black.

Wednesday 21 November 2012

Joining the Rebellion

The last few weeks have been awesome - Spending lots of time with the family and really enjoying my time off between jobs.  This time off has made me ready for my new venture which started this morning.  Today is the first day in my new role as a Technical evangelist for ZeroTurnaround - I've joined the rebellion.

I wanted to join ZeroTurnaround as they looked like a really smart, fun, energetic outfit which produced some really cool products.  I'll be learning up JRebel and LiveRebel and will soon be preaching all about their awesomeness :o)

My work will be very community focused, so I'll continue to work with groups like the London Java Community, the Graduate Developer Community, as well as others.  I'll be aiming to create technical content around the products and the product areas as well as continue to speak at conferences.

As I learn more about the technology areas and products I'll share what I've learnt here and on the ZeroTurnaround site, so you can learn with me :o)

Oh and ZeroTurnaround have *the* greatest business cards...

Monday 5 November 2012

LJC Open Conference 2012

On November 24th 2012, the LJC will be hosting it's annual open conference at IBM South Bank, Waterloo.  If you have attended this event before you do not need to read any further, go and sign up now :) if you have not been attended an LJC Open Conference before, it's awesome! The day is scheduled as an unconference whereby sessions can be suggested in advance, but the timetable is created on the morning of the conference. We also have refreshments throughout the day, food, beer plus giveaways all paid for by our sponsors (tba soon). Here's a rough schedule of the day:

8.30 am Sign-in hands over to security
9.30 am Brief introduction, discussing how day will work and organising the board
10.10 am Conference Keynote
Open conference Sessions
12.40 Lunch
Open conference Sessions
5.30 pm Conference wrap up
5.30 pm+ Social event TBC

Sessions typcally include a wide range of topics, not just specifics of the Java language, Spring, Hibernate, Open Source, OSGi, etc, but also about tools and practices - eg. software craftsmanship, BDD, TDD, Kanban, Agile and other practices that enhance our world.
So a one day Java conference in London... Should cost quite a bit right? WRONG! £20 is all we ask per person, bargain.  Oh, there are only 120 places and 50 have already gone... Sign up now and avoid disappointment!

Looking forward to meeting you/seeing you there!

Simon -- LJC Open Conference co-organiser.

Friday 26 October 2012

Leaving big blue

Yep, I'm calling it a day with one of the biggest and by far *the* most important company in the history of computing (and before that, tabulating!).  So why leave?  Well that's mostly between IBM and myself :o)  But I really want a new challenge with a new company which have a very different dynamic to a large corporate.  I will be letting you know about my future plans soon enough, but this post is all about IBM and me :o)

I've worked at IBM for over 11 years, and I wanted to share my experiences with you.  The Hursley site is a truly wonderful place to work, but the most important asset onsite is the people.  IBM have built up a friendly, highly technical group of people, many of whom I consider my good friends which I will continue to meet up with beyond my career at IBM.  The portfolio IBM produces in my opinion is second to none on the market, and I look forward to continue watching IBM perform well in the future, on the other side of the fence.

So what am I doing?  Well for now I'll say that I'll still be working as a technical evangelist, but for a very different company indeed.  IBM has over 300,000 employees, whereas my new venture has < 100.  Yes, it's going to be a big change and I'm looking forward to tackling the new challenges.  I'm still going to be involved around the Java space and will be involved with the London Java User Group (London Java Community - LJC) more than ever.  I'm sure there will be aspects I will miss, and I'm sure there will be aspects I will not miss ;o)

I'm really excited about this new move and the prospects it brings and look forward to sharing this with you in more detail soon when the time is right.  For now, thanks to everyone at IBM for making my time here amazing.  Thanks for your support, from a technical, career and friendship point of view.  I've met many great people, none more so than my wife, Liz!

So long and thanks for all the fish.