Archive

Archive for the ‘Java’ Category

Studying for SCJP?

March 14th, 2010

I was recently quizzed about prep for the Sun Certified Java Programmer exam, so here’s a quick rundown of the resources I found useful and tips I picked up when I was studying for SCJP 5. All in, it cost me around £200 and took just under four months. I can recommend the following resources:

  • SCJP 5 Study Guide by Kathy Sierra and Bert Bates. Choose the book for the certification version you’re going for. Work through every chapter and make sure you understand every concept and gain some familiarity with the APIs. I found flash-cards (little cards, questions on one side, answers on the other) invaluable for really burning some of the more difficult to remember stuff. As I didn’t have a programming or Computer Science background, I learnt more about Object-Oriented concepts and programming in the first three chapters of this book than I did from anywhere else.
  • javaranch.com SCJP FAQ for the latest thoughts info on certification, and the SCJP Certification Forum, in which you’ll start by asking questions and wind up answering the questions of others as you get lined up for the exam. The FAQ is also a good place to check what the recent exam takers are saying about the exam and the study materials. You can also use the Rules Roundups to get a feel for answering questions, although they’re pretty easy compared to the exam.
  • Mock exams. When you think you’re nearly ready for the exam, grab a pack of mock tests (I used whizlabs). I certainly wasn’t as ready as I thought I was! Do them properly – set aside at least an hour and try and work as if under exam conditions – you also get used the format of the exams and there’s a few tricky corner cases in the mock exams I did that are worth knowing about.
  • Sign up for your exam at prometric.com. I signed up for the exam as soon as I’d finished reading the Study Guide, because I’m fundamentally lazy and needed the impending deadline! If you do the same, you might want to give yourself a month or two between booking and exam day to do those mocks and deal with any gaps in your knowledge they throw up.

I’ve also got a couple of tips on techniques to use for answering some of the tricker exam questions – that can also come in useful when writing and debugging code.

First up, the exam will often have a code sample and ask you to choose from a number of options. ‘Does not Compile’ is almost always an option, and it kept catching me out at first. The way I dealt with it was to run through the sample twice – first as the compiler, looking for those errors that would prevent the code compiling in the first place. Only if that first check didn’t throw up any problems do you need to imagine the behaviour of the code as it runs and look for exceptions and results.

Second, come up with some way of sketching the changing references to objects as you work through a code sample. This’ll help you catch subtle re-assignments you might miss working it through mentally.

It’ll take up your time. I was probably spending about 5-10 hours a week learning, revising and writing code for those four months – that counts when you’re working full time. It’s worth it though, particularly if you’re an inexperienced Java programmer. It’ll make you aware of some of the principles and practises you should be thinking about and it’ll give you something of a guided tour of the core Java APIs.

If you going to go for this cert, good luck!

Paul Brabban Development, Java

When Eclipse Plugins Don’t

January 27th, 2010

Quick Version

If, after ‘installing’ a plugin for Eclipse 3.4 it’s not visible in Preferences or in context menus, check that your user account has permissions to write into the appropriate Eclipse directories – because Eclipse doesn’t warn you.

Preamble

For those who don’t know, Eclipse is an IDE heavily used for Java development. Like anything else, it’s a delicate balance of awesome and suckage, and today I got caught out by a pinch of suckage.

It’s a plugin-based platform, which means that anyone can write a piece of software that ‘plugs-in’ to Eclipse to extend or enhance the functionality. It’s a great approach, allowing me to tailor my own installation to my needs. Having recently re-installed Ubuntu Linux, earlier today I was trying to set up my plugins without success.

The Problem

I set up the m2eclipse update site as described in the documentation (pretty standard fare… Help > Install New Software…, paste in the update site URL and choose components to install) but after ‘installation’ was completed there was no sign of the plugin. There should have been new options appearing all over Eclipse, but no. Tumbleweed.

Tried installing the next plugin on my list… Subclipse. Same story. So not a problem with a plugin…

The Solution

…and then it dawned on me. I’d installed Eclipse into /opt, which is all locked down to root, with administrative privileges. Schoolboy error – no permissions for the plugin files to actually be installed under the authority of my user account, which is the context that Eclipse normally runs.

A quick chown to root:admin for the /opt/eclipse directory (rather heavy handed – I should probably have worked out which directories I needed write access to, but I was out of patience), ‘uninstalled’ the plugin in the Eclipse, tried the install again and then I was back in business.

I’m really surprised that Eclipse doesn’t complain when it’s ‘installing’ a plugin in directories to which it has no access. I may not be the sharpest tool in the box, but I’m fairly sure that permissions problems happen to other people too. I might go so far as to find out where you feed back to the Eclipse development community for once. Anyways, this post will help remind me next time I get this wrong, it might help someone out, and if nothing else you might be mildly entertained by my ineptitude.

Paul Brabban Development, Java

Perl is slower and faster than Java

January 9th, 2010

Bit of a random one coming up…

I needed to get an measure of the difference in performance between Perl and Java for a simple client application, so I wrote the traditional ‘Hello World’ app in both and ran a bunch of executions averaging over the time from start to end of execution. The net result:

Perl is around 34 times faster than Java.

Really? I thought Java was supposed to be fast? In fact, Dhananjay Nene talked about how comparatively fast a selection of languages – including Java – were on his blog, and cwilbur ’s comments suggest that in that experiment:

Java is around 100 times faster than Perl.

So how can these two conflicting results both be true? I’m sure you’ve already figured it out, but I’m going to tell you anyway.

Java code takes hundreds of milliseconds to start up, because Java code runs in the Java Virtual Machine which needs a little time to get itself ready before your code can run. Once it’s up, however, you can get performance close to (or even better than, in reality) that of typical C++.

On the other hand, Perl doesn’t need that environment and so can start faster but trades off more overhead at runtime, meaning slower running performance.

Just goes to show, application performance is another area where there’s no one right answer – it’s about choosing the right tool for the job – I don’t think there’s any way round these performance characteristics without cheating.

Paul Brabban Development, Java, PERL