About three weeks ago, I was watching a Film 4 late night with my partner. We stumbled upon on a martial-arts movie, called Ip Man. We thought it was one of the best Kung Fu movies of recent times, up there with Kung Fu Hustle. Donnie Yen who played Ip Man, a semi-biographically account of one of Bruce Lee’s mentors. Ip Man was a discipline, evolutionary innovator and a formidable master of a fighting style called Wing Chun.
I thought after watching this amazing award-winning film that Chinese culture teaches us about excellence. Especially, in the movie, at the very beginning other masters of Chinese Kung Fu were attempting to defeat Ip Man is bouts of educational study. In other words these fights were not about making money, popularity contest or even on how to pull. They were simply impressive in the objective to gain further knowledge, to live better healthily and be enlightened. Thus it posed a question in my mind about the concept of masters, disciples and followers.
I have been trying to figure why developers and designers, especially in the financial services, are suddenly tied to a cast iron grate, of fire-fighting the Java Virtual Machine, attempting to make it do things that it was not originally designed for. Sometimes these non-functional requirements have meant a thorough knowledge of the operation JVM, how it manages memory, what sort of byte codes are executed in order to obtain the best performance. People suddenly want a great deal of understanding of the garbage collection mechanism way beyond that was required for Java EE 5 or 6, as they try to service 10 million records from database tables that are joined. Suddenly many more professionals are very interested in “Making it go-faster still”.
Why are developers in certain investment banks so willing to write Java like if it was C or C++? Surely this is wrong way to go? What is it about multiple threads that developers are not willing to use the Java SE 5 Executors or apply Java SE 6 concurrency utilities? Why are they willing rewrite their own Collections API? (Of course that is interesting for me personally for study in terms of the Scala Collections version 2.8 and better)
I know a little bit about Java Performance, but I need to understand it in much better than I do now. So like the prodigal masters of Kung Fu in alternate style, I need to understand performance on Java from someone who definitely knows what they are talking. Remember that concept of reputational risk that I mentioned in the JavaOne reviewer blog entry, well that risk is minimised when you sit, learn and study with a master. For me this master is Pepperdine.
PS: Photo credit from the artful, talented and impressive Chicago Wuhsu, Illinois, USA, 2011