I deliberately refrained from learning anything about Terracotta before I came in. And I was not disappointed by Alex's delivery. My perception of Terracotta has changed from "expensive magic better not to touch" to "open source distributed shared memory technology for the JVM," still magical, but its "magic I can believe," or even "magic I can Xerox."
The presentation slides and code examples are up on the JUG website. So I won't bore you with things that you can read there.
I'll just mention a few things that you won't get from reading the slides.
Alex came in wearing one of these:
Our "Which version of Java are you using?" poll proir to the talk netted One(1) still on 1.3, Five(5) still on 1.4, about Ten(10, I didn't have enough time to count all hands) on 5. Charles Sharp, who was the MC, did not ask about 6 or 7. So the rest of the 31 audience members are either on 6 or not using Java at all. There were a few recruiters sitting at the back
Recruiting is still strong. OCI/Advantage Consulting, Comsys, TDK Technologies, Harpoon Technologies are all looking for Java talents in the St. Louis job market. Comsys provided three gift cards totalling $100 as door prizes
As usual, someone got a free IntelliJ IDEA license
Terracotta also provided an iPod Shuffle to raffle off. Thank them
Brian Gilstrap wrote a Swing app while Alex was talking for selecting random dates used when the free gifts were given away at the end of the talk to people whose birthday matches the selected date. It's pretty cool
Terracotta has about 50 people, 20 of them technical, distributed geographically, "a distributed team working on a distributed infrastructure"
Scott Bale, who was in attendence, who also works for Terracotta, will give a talk about Google Guice in our May meeting. "How to migrate away from Spring IOC to Guice" will be covered
Our own Charles Sharp, whom if he had a website or blog I haven't been able to find it, will talk about JUnit 4 in next month's meeting. "How to migrate away from JUnit 3 to JUnit 4" will be covered
OK, on to Terracotta. These are just my impressions, and I could be wrong:
It allows multiple JVMs to share data in a thread safe way
In Eclipse with the Terracotta plugin, you can add the "Terracotta nature" to any Java project
Plugins for IntelliJ IDEA or NetBeans is not planned, so if you want to use Terracotta, you have to use Eclipse, whcih is fine with me because Eclipse is free
Adding the Terracotta nature won't change your Java code. It does add a tc-config.xml file to the project and the menu item "Run with Terracotta" to the place where you usually see "Run as a Java application"
When you do choose "Run with Terracotta", the Terracotta plugin will remind you "You haven't started the Terracotta server yet, would you want me to start it for you on port 987 (I don't remember the exact port number)?" You say yes. Then you can run the client (your application), multiple times if you want to see what Terracotta will do
The Terracotta clients communicate with the server through unicast TCP
The default tc-config.xml does nothing to your application, to take advantage of the Terracotta server, you have to add classes, fields, and the type of lock to the config file. These are done through menu items and wizards
The word "dso" appears in the configuration file. It stands for "Distributted Shared Memory"
A "bootjar" is generated on the fly the first time you run the application as a Terracotta client. It depends on your app and your version of the JDK. It is prepended to the bootclasspath when the JVM is started
The Terracotta runtime intercepts bytecode level stuff (like field access or method invocation) to hook in its own magic
It uses, as far as I can see, a Terracotta proprietary protocol to communicate changes in object states from the client to the server
The server is more like a database then an event hub or message hub
As long as the server is up, clients can go down and then up and still see its shared state preserved inside the server
The server can be started with persistence turned on, in which case even if both the client and the server were shut down the client states are preserved on disk. Bring up the server again, and then the clients, the previously saved states are visible again
The server uses Berkeley DB Java Edition to accomplish this
The server is monitorable with JMX. The next version of the product will have an admin console that allows one to monitor a lot more of the innards of the server
"Bytecode modification is not scary."
"Redmonk just wrote about us."
Q: How do you make money? A: We make money through support and licensing and maybe an operators edition that has visualization tools.
Q: What about Tangasol? A: I know very little about their product. They are expensive at tens of thousand dollars per CPU.
Terracotta has a Maven like repository that contains some of the most popular open source Java libraries already instrumented by Terracotta