Get the latest Java books
h t t p : / /w w w . j a v a c o f f e e b r e a k . c o m /
Looking for Java resources? Check out the Java Coffee Break directory!
Sing is an active author, consultant, and entrepreneur. He has written for popular technical journals and is the creator of the "Internet Global Phone", one of the very first Internet phones available. His wide-ranging consulting expertise spans Internet and Intranet systems design, distributed architectures, digital convergence, embedded systems, real-time technologies, and cross platform software design. He is also an active participant in the Jini community.
Q: What has been the biggest development within the Java Community in the last 12 months?
A: Low profiled and quiet, jini.org is going through the revolutionary ladder of an almost open-source software development project. Revolutionary in the sense that it is the very first venture that Sun has embarked on to turn over control of a core technology to the public domain. Since then, Solaris and the TomCat Servlet/JSP engine have followed a similar path. This is a big development because the creative and engineering might of the entire Internet has been summoned at one place. It is a model system for collaborative development and evolution of key (and revolutionary) technology in the public domain. This "fruit of labor" may not be ripe for the picking yet, and consequently a few impatient souls may give up. The hype-masters are saying "been there, done that". But the truth of the matter is that I first wrote about Linux in 1993 and it was not until 1999 that it was "noticed" and "chosen" as a viable alternative operating system. Public domain projects have this built-in latency, and when they finally mushroom…watch out!!
Q: What are the advantages working with Java, as opposed to working with other technologies?
A: Java provides an industry-proven and tested vehicle to improve engineering productivity. Without having the hassle of figuring out pointers, managing memory allocations, etc., a development team can work "closer to the algorithm" and dramatically shorten the concept-to-product cycle. In the "olden" days of Java, this came at the cost of performance. With all of the energy currently going into R&D on the compiler, code generation, and optimization, Java is no longer the dark horse, but a speeding gazelle destined to become the very foundation of the new net-centric software universe.
Q: Java has become very popular for server-side development. What does Java bring to server-side programming that other languages have not?
A: Write once, and run on machines of any arbitrary level of processing power and scalability: this is the Holy Grail of server software development. It is a sad but well known fact that a certain level of scalability, fault tolerance, 24 by 7 operations, etc. are bound and tied to a specific vendor's hardware offering. Until now, you have had to code to that vendor's operating system and environment. Today, properly coded Java server components can be engineered on Open Source Java over Linux systems, and then deployed on main frame or clustered machines without change. In production terms, this literally means that the same components can be used through out a system's lifecycle as it grows - or as the underlying dot com company succeeds in the market place - thus allowing for a gradual scaling up of a system, from a few users to millions of users.
Q: Beyond website servers, there are some new distributed systems technologies on the market. Your new book is on the topic of Jini. For those who have yet to read about Jini, could you sum up in a few sentences what Jini is, and how it came about?
A: Jini is a natural extension of Java in this new era where the network is quickly becoming the 'computer'. It facilitates robust, scalable, fault-resilient distributed processing across a network of multiple machines - and does so in a non-restrictive, generic, and elegant way, as you would expect from a Java technology.
Q: One of the areas of potential that Jini could really shine is interfacing with devices in a non-OS specific way. Indeed, for over two years we've been hearing of Jini devices "just about to hit the market". Are there any Jini devices like printers, copiers, cameras, portable audio players, etc. that are available or set for imminent release?
A: Yes, within a localized network or a proprietary environment, Jini can become a completely embedded technology that is integral to the proper functioning of a network-based product - without necessarily revealing it to be based on Jini. I think we will soon see products and systems that are based on this type of architecture. Generic device support is a chicken-and-egg problem (if the consumers do not ask for Jini by name, the manufacturer won't build it; and if the manufacturers don't build it first, the consumers will not know what to ask for). Wholesale device adaptation will depend on the temperament of the mass consumers market, and whether or not some innovative third-party can come up with a 'killer app' for the technology. See my answer to the next question for more details.
Q: There's been a lot of hype over Sun's Jini technology, and it’s been quite a long time since the initial release. Do you think Jini will live up to its hype, or will we see it superceded by other technologies?
A: The marketing 'spin' on the technology thus far is purely based on 'Jini as an instant on network' (or plug and work) technology. Sun's marketing forces have determined that their initial target market is in networked device manufacturers. Their success in this area is yet to be determined. And, just as Java was way more than just Oak (an extensible set-top box controller script language, as it was originally marketed), Jini is way, way more than just an InstantOn networked device technology.
I really applaud the efforts of the top level Sun designers because they have put out some of the most innovative, visionary, practical research (pure research with potential applications) products amidst a sea of 'me too' or 'clone the mainframe' code fur balls.We are just starting to see Sun's marketing 'spinning' Jini back-on-track., away from the device-based image and more towards the core and strategic technology track. Meanwhile, competitive forces are busy reinventing proprietary versions of Java. Since Jini cannot exist without Java, Sun has a time lead that is not easily surpassed. Having said that, one must realize that cloning an idea can always be done in a much shorter time than the original evolution: I have my fingers crossed that Sun will succeed.
Q: Reading texts like the Jini Specification, I get the impression that Jini programming could be quite complex. Just how hard is it to write a Jini service, or a Jini client? Can one learn to program for Jini just by reading the specification, or is it easier to learn from examples, like in Professional Jini?
Jini programming can really be quite simple. It can be done directly from the specifications. Having said that, I must also say that Jini leverages several advanced features of Java networking itself. These features are quite difficult to master. For example, the nuances of dynamic code downloading (getting that CODEBASE annotation just right), the programming and operation of the RMI activatable services, IP multicasting, socket-based programming, the Java 2 security model,
etc, are very complex. Someone who is totally fluent in these more advanced aspects of Java network programming should find Jini 'a very thin layer' and a piece of cake to learn. For the rest of us, we must first brush up on these advanced Java programming concepts by studying books on advanced Java network programming, advanced RMI programming, etc.
Q: What sort of tasks, either for consumers, or for business, can Jini be used for? Is it more likely to be hardware services, or is Jini being used for software based services as well?
A: My personal belief is that Jini will have its most dramatic impact on the creation of a new breed of 'access anywhere by anyone using any device' software-based services (potentially hardware assisted) by providing an 'easy to use' substrate for creating scalable, fault-resilient, robust, distributed applications. This is especially significant in the emerging ASP (application services provider) and business-to-business e-commerce markets. It will also find significant applications for roamable, occasionally-connected device networks (i.e. wireless terminals, proximity/BlueTooth, SmartCard).
Q: Looking to the future now, where do you see Java heading? Is there a particular technology (Jini aside), that you think shows great promise?
A: Other than new vertical APIs, Java is architecturally heading for Jini as the Java VM is extended beyond the single machine boundary to across the network. Along this line of thought, the Professional Jini book will have you thinking about the fundamental question: "What, physically, is a Java object?". In my (humble) opinion, when Jini becomes an integral part of Java, the answer to that question will change dramatically.
Other than Jini, I am fascinated by the swell of 'tiny Java' technologies, the ability to run Java application on a Palm PDA using J2ME CLDC, embedded Java and super inexpensive controllers hosting Java VMs, etc. Together, I think they will soon realize the vision of having computers wherever they can be applied – appliances, wearable computers, disposable computers, etc. There are limitless possibilities for exciting new applications.
Why not come and be part of this evolution at http://www.jini.org?
Q: Sing Li, thank you for your thoughts on Jini technology, and the future of Java. Sing's book on the topic, "Professional Jini", is published by Wrox Press.
Interview Copyright 2000 Wrox Press. Used with permission