Get flash to fully experience Pearltrees
by Joel Spolsky Wednesday, October 08, 2003 Ever wonder about that mysterious Content-Type tag? You know, the one you're supposed to put in HTML and you never quite know what it should be? Did you ever get an email from your friends in Bulgaria with the subject line "????
I have spent a good part of the last year trying to "wrap" COM servers in Java for a content management organization. It had an array of syndication servers supported by an integrated messaging platform developed using COM. The purpose of this exercise was to increase the organization's market penetration by hooking on to the J2EE bandwagon across multiple platform configurations. With so many different complex COM servers to work with, some supporting automation and others not, I struggled with the all too familiar JNI cycle...code, crash, code some more, and then crash. Literally speaking, I must have brought down the JVM hundreds of times. To top it off, some syndication servers worked on a "pull" mechanism, they could pull the content out from the interfacing repositories.
Lasse Koskela Accenture Technology Solutions Continuous Integration is one of the buzzwords most people have probably heard of but surprisingly few are actually following this XP best practice. Keeping this in mind, I'll begin this tutorial by briefly describing what Continuous Integration actually means, why you should consider doing it, and finally, showing step by step how to do it using one of the most used Continuous Integration products, the open source CruiseControl developed by a bunch of ThoughtWorkers . Technically, the term "Continuous Integration" means that everyone on the team integrates their changes back into the source repository frequently , verifying that the changes didn't break anything. These days, most people associate Continuous Integration to be highly automated as well, i.e. having an automatic build system in place to continuously verify that the code in the repository compiles and passes all its tests.
Traditionally a Java VM agent is loaded into a VM at initialization with the option -XrunNAME, where NAME is the name of the native shared library or DLL, e.g. "libNAME.so" or "NAME.dll". For example, using HPROF you would say "java -Xrunhprof", it would find "libhprof.so" or "hprof.dll" in the JDK, load it, and make a call into that agent library to get it started. Of course in JDK 5.0, the new option spelling is "-agentlib",.e.g. "java -agentlib:hprof", but JDK 5.0 will accept either option spelling. There is a set of sample JVM TI agents in the demo directory of the JDK available in the JDK 5.0 download , or if you are brave the latest JDK 6.0 download .
Last month , we looked at the classic garbage collection techniques of reference counting, copying, mark-sweep, and mark-compact. Each of these approaches has advantages and disadvantages in certain situations. For example, copying does well when a large proportion of objects are garbage, but does poorly with many long-lived objects (copying them repeatedly). Conversely, mark-compact does quite well with long-lived objects (copying them only once), but not so well with many short-lived objects.
<IFRAME src="http://avpa.javalobby.org/servlet/view/html/zone?zid=32&pid=0&random=51348720" height="90" width="728" hspace="0" vspace="0" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"> <A href="http://avpa.javalobby.org/servlet/click/zone?zid=32&pid=0&lookup=true&random=51348720" target="_top"> <IMG src="http://avpa.javalobby.org/servlet/view/image/zone?zid=32&pid=0&random=51348720" height="90" width="728" hspace="0" vspace="0" border="0" alt="Click Here!"> </A> </IFRAME>