de: Vanilla #Java: What skills should a Core Java Developer have?

 

OVERVIEW

I have been trying to put together a list of basic skills a Java developer should have to move on to being an advanced Core Java programmer.

 

SKILLS

You;

  • can write code on paper which has a good chance of compiling.
  • can use a debugger to debug programs and profile an application.
  • are familiar all the primitives types and operators in Java.
  • understands the class loading process and how class loaders work
  • can use multiple threads both correctly and can prove this improve performance or behaviour. e.g. wait/notify/notifyAll, SwingUtils.invokeLater, the concurrency library
  • can use checked exceptions, generics and enums
  • can time a small benchmark and get reproducible results
  • can write a very simple client server TCP service
  • have an understanding of garbage collection, when is it triggered, what can you do to minimise it
  • understand when to use design patterns such as Singleton, Factory, Fly-weight, Builder, Object Pool, Iterator, Strategy, Visitor, Composite

 

SUGGESTIONS ON HOW TO GET THESE SKILLS

  • read Java Concurrency in Practice (http://jcip.net/)
  • write a simple client server TCP service such as chat
  • read up on Design Patterns and try to use them. http://www.oodesign.com/ so you can learn when they help and don't help