Thinlet Titan Interview With Michael Nascimento Santos
Gerald Bauer <[email protected]> Thu, 16 Dec 2004 17:43:59 -0800 (PST)
| Newsgroups | gmane.comp.lang.xul.announce |
|---|---|
| Message-ID | <[email protected]> |
Hello, Welcome back to the Thinlet Titan Interview series. Today let's welcome Thinlet committer and Genesis founder Michael Nascimento Santos. Q: Can you tell us a little bit about yourself? Michael Nascimento Santos: I've been programming since I was 11 years old. My interest on Java began when a edition of a famous magazine in Brazil came out with an article about a new "hot" programming language. I had tried OOP before using Clipper and lots of compiler tricks (#xcommand, #xtranslate etc.) and I was looking for a more powerful and expressive OO language that wasn't as low as C++. Visual Basic wasn't good enough, but Delphi actually appealed to me at that time. However, when I found Java, I got crazy about it almost immediately. It was very powerful but yet significantly simpler when compared to C++. It's been 5 years I've been coding almost exclusively in Java and I don't regret it. Nowadays, I help to run SouJava, one of the world largest JUGs, manage the JSR community @ java.net, serve as expert at JSR 207 (PD4J) and 250 (Common Annotations), and help to develop Thinlet as a committer and AspectWerkz as a contributor. I've also spoken at many events, such as JavaOne, JustJava, BrasilOne, Javali (FISL), Abaporu, COMDEX Brazil and others. I'm very proud to work at Summa Technologies do Brasil, which is recognized by the community as being the leading company for Java development, mentoring and consulting in the country and also has an office at Pittsburgh. We've just released a Thinlet-based open-source framework (that does much more than UI, by the way) called genesis, hosted on java.net at http://genesis.dev.java.net Q: How did you stumble onto Thinlet? Have you tried out any alternative XML UI toolkits for Java before settling on Thinlet? Michael: One of our customers asked us which technology they should use to migrate their over-10-year-old client-server applications - which is a very common scenario in Brazil. They needed something that produced very lightweight (some of their machines have 16MB of RAM), responsive and easy-to-develop UIs. So we first asked everyone at Summa for alternatives to Swing (which obviously didn't meet the first and the third requirements) and Eduardo Ito, our "encyclopedia" guy, come up with around 50 frameworks that could be useful, including Thinlet, SwiXML, SwingML, wingS, Zaval, Millstone, Luxor, Naked Objects and others. After some testing, we were sure Thinlet was the way to go. In around 2h I was able to code the entire UI logic for a somewhat complicated logic. Designing the UI itself just took a few minutes, so at that moment I was sure Thinlet was just what they've been looking for. The funny thing is that although we did this research almost one year ago, they didn't start using Thinlet until very recently, but we've been using it since then in many projects. It's just great. Q: What's the hook? Why would anyone use Thinlet over say plain old Java Swing coding? Michael: For the same reasons we've been using it: it's easy to teach, easy to use, fast to develop with, produce responsive UIs without too much thinking and has a very intuitive API. Swing is painful and, it's very hard not to produce slow, unresponsive UIs with it. It takes ages for someone to master it. You don't want your UI programmers to be senior programmers unless you're doing some sort of very specific software in which you need high control and extensibility in order to do your work. Q: Can you highlight some of your apps built using Thinlet? Michael: Before Javali's effort to develop a free, open-source JVM, I was asked to take a look at the different open-source VMs already available and how they did compare to each other and especially to Sun's implementation. I developed client-server application consisting of a remote test server for each VM configuration and a performance meter workbench that would allow one to register remote VMs, select which tests to run, how many iteractions shouldn't be considered (warm-up iteractions), how much time to pause between iteractions, whether or not to invoke the gc between them, how many runs each iteraction should have, and much more. Then, you could start the remote tests and the workbench application would collect statistics about each run of each test in each VM, allowing you to analyze them using many different perspectives, such as test results per VM, VM performance per test and so on. This was my first "serious" Thinlet application and I learned a lot about how to develop applications using it. The first need I noticed was to write strongly typed setters/getters for properties, methods to create rows and items based on Collections and things like that. One application we are particularly proud of was one developed for a customer that needed to get rid of Dataflex in their core business, mission-critical application. It was a sales system with complex business rules and many UI iteractions that could cause the whole screen to be repopulated in order to always display consistent data. It was quite a challenge since one of the requirement was that our customer's existent team could develop it with us and actually understand the technology involved, at least well enough so they could maintain it by themselves. Before starting this project we were looking for a way to solve exactly this problem and we got our solution ready in time. We've developed a framework that solves the client-side problem by extending Thinlet and integrating it with commons-beanutils and commons-validator. Now, it's far more mature, handles many other situations and is available as open source software at http://genesis.dev.java.net I've also recently helped one of our customers to define a platform for PDA development using Thinlet with genesis. It was quite interesting to see Thinlet working seamlessly on the device. :-) Q: Can you tell us some challenges you faced building your apps using Thinlet? Michael: We've found out Thinlet dialogs don't work very well for some users, so we had to replace their use with java.awt.Dialogs. A limitation that got in your way in the beginning was the fact you can't edit a cell in a table directly. We've got around this by opening an auxiliary window when the user double-click the row. There were some critical bugs in spinbox and table that took me some time to fix. Q: How did you get started on AspectWerkz? Michael: A friend of mine, Carlos Villela, told me about it once and I checked out their site immediately. It seemed very attractive to me since that first contact because it didn't require an odd syntax, new keywords or IDE plugins. Then, when I needed to do something serious with AOP (transparent remoting, the first genesis feature) I tried it and got it working really quickly. At that time, AW 0.9 was in beta and its license wouldn't allow me to use it in our project that would start in two weeks. I sent an email to AW user's list about it and Jonas Boner and Alex were very responsive, doing a release and changing the license really quickly. When I noticed they were so responsive and that AW was so easy to use and powerful, I was sure it was the right AOP framework for us. Q: Can you tell us what aspects and cross-cutting concerns you use in your Thinlet app(s) and how AOP fits into the Thinlet world? Michael: Well, most things at genesis are implemented with aspects: transparent remoting, transactional support, dynamic searches, enabling/disabling fields declaratively, showing/hiding widgets, calling validation before executing a UI action and much more. AOP is great when you use Thinlet on desktops and Java 1.3/1.4. Its usage has made our code very clean, maintainable and testable. It's a perfect couple :-) Q: What's your take on adding styling support to Thinlet? Have you tried out Eugene Klein's Skinlet addon? Michael: Skinlet is great. I hope to be working really heavily on Thinlet in the first quarter of 2005. This one of the things I expect to discuss with other commiters. Q: Do you have a favorite scripting language for the Java runtime? Do you want to see scripting pushed more in Thinlet or do you want to keep the code Java only? Have you tried out Norbert Barbosa's Scriptable Thinlet addon? Michael: Scripting certainly has its value if used propertly. Scriptable Thinlet will definitely help you being productive if you are working on small-to-medium-sized projects. However, as your project grows, it can turn into a nightmare. I like the idea of using script fragments to declare conditions, as we do in genesis. I especially like Groovy and JavaScript, as well as JXPath, which is not a scripting language exactly, but can be used as one. Q: What's your take on creating an OO wrapper for Thinlet? Michael: I think I don't really like the idea. If you find Thinlet model too raw, you better move to a UI component model where your POJOs with presentation logic are not even aware of which API is being used for displaying them. That's the approach implemented by genesis. genesis forms are totally independent from Thinlet. Q: What do you think is still missing in Thinlet? Michael: Easy support for custom components and more hooks for built-in widgets, such as key listeners, input validators, etc. I hope I can work on that soon in a way that is still Java 1.1.8 and there is no overhead if you don't use these features. Q: As a Thinlet committer do you have any suggestions on how to improve the Thinlet development process? Michael: Tools are already available, but are not being used properly - some are actually not being used at all. Bugzilla/issuezilla is the most critical of them, for example. Q: What are your future plans for Thinlet? Michael: I hope I can make Thinlet much more extensible and flexible. If Thinlet has this characteristics, it will become a killer UI framework. Thanks Michael Nascimento Santos. Links: * Genesis - http://genesis.dev.java.net * Thinlet, Skinlet, Scriptable Thinlet & Co - http://thinletplus.com * AspectWerkz - http://aspectwerkz.codehaus.org ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/