if thats the case, then i would start with the java code. propose a small, say, 3 week RnD project where you branch the java code and swap out a well chosen part of the java code with well designed code. then run performance tests on the old version and your version and give those results to your manager. this gives you leverage to say ok boss, lets break this java code out into 3 or 4 or however many necessary sections and attach each one at a time and bring them up to par. keep those sections very contained, like say, step one, we will pull out the custom logging system and replace it with log4j. then release. step two, we will pull out hibernate and replace it with jdbc because raw jdbc is better suited for this type of app. step three, we will go thru all of our arrays and switch them over to a more appropriate data type for the task they are trying to accomplish, etc, etc, etc. get the existing java to really scream and perform to its full potential. just keep the scope of each section to 1 or 2 month release cycles, something that doesn't drag on endlessly from a managers point of view.
if you take that approach, then the question of which language is faster becomes moot. (removing the hardware factor from the following statement) well designed code will run faster than bad code every time. this will give you leverage in the future on new features to say well, it will run faster if we bypass the whole c thing and just do it directly in java, you've got the benchmarks to backup your statements. from your point of view your basically implementing a planned obsolescence, but you don't have to tell the boss thats what your doing ;) On Thu, Dec 1, 2011 at 8:37 AM, Carl Jokl <[email protected]> wrote: > For me personally, it is not just about the performance but having a > cleaner and more manageable system. > > Setting up a new server could be as simple as installing Linux, > installing Java, installing the database and a Servlet container > container then dropping in the War and the system is running. > > The existing system requires a bunch of extra work for the benefit of > installing GNU Step and also deploying the Java in such a way that GNU > Step and Java can reference each other. > > Performance seems a focus of the technical manager. I have made > changes in the code that were aimed at making the system cleaner and > better architecturally structured but the question I get asked seems > to just be "will this be faster?" > > I am approaching the problem on the terms I think my development > manager cares about. If it was a question of clean architecture I > don't know whether GNU Step talking to a Java web layer would have > been chosen. I believe my development manager was involved in the GNU > Step project and so I believed used it because he was a fan of the > technology rather than because it was necessarily a good fit. At least > that is the impression I get. I have not been with the company very > long. > > The Java code in the system is probably some of the worsted I have > worked on. Hashtables and Vectors everywhere. Coding to > implementations including all the collections. The concrete > implementations of collections i.e. Vectors and Hashtables are exposed > in the class APIs. The code seems to involve lots of bloated Servlets > frequently with multi page long methods. Many standard Java > contentions can be ignored like using upper case package names not > following JavaBeans style but that is of lesser concern to me than the > coding to implementations and massive complex methods that should have > been broken down into smaller ones. > > This system also rolls its own web framework and its own logging > framework. > > I would have my work cut out for me just cleaning up the Java. The > Objective-C would be more liveable if the two systems were black boxes > with a well defined boundary interface for communicating back and > fourth but I think the use of wrappers means that Objective-C classes > will just be sprinkled liberally through the Java code. > > All the Java code I have seen speaks to me of a lack of thought about > architecture or design patterns / principles. This might be explained > if the top priority is 'performance' or at least perceived > performance. > > -- > You received this message because you are subscribed to the Google Groups > "The Java Posse" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/javaposse?hl=en. > > -- You want it fast, cheap, or right. Pick two!! -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
