|By Janice J. Heiss|
This series of interviews spotlights Java Champions, individuals who have received special recognition from Java developers across industry, academia, Java User Groups (JUGs), and the larger community. While the Java Champions self-select their members, the Java community at large can nominate candidates in accordance with the Five Guiding Principles, which include leadership, technical skill, credibility, educational and humanitarian contributions, and professional influence.
Matjaz B. Juric is head of the Cloud Computing and SOA Competence Centre at the University of Maribor in Slovenia. He is also a professor at the University of Ljubljana. He has authored/co-authored Business Process Driven SOA using BPMN and BPEL, Business Process Execution Language for Web Services (English and French editions), BPEL Cookbook: Best Practices for SOA-based Integration and Composite Applications Development (named best SOA book in 2007 by SOA World Journal), SOA Approach to Integration, Professional J2EE EAI, Professional EJB, J2EE Design Patterns Applied, and .NET Serialization Handbook, along with many articles and book chapters.
Juric has been involved in several large-scale Java, SOA, and Cloud projects. In cooperation with the IBM Java Technology Centre, he worked on performance analysis and optimization of RMI-IIOP, an integral part of the Java platform. He is a member of the BPEL Advisory Board, and a Java mentor and trainer.
He is professor at the University of Ljubljana and the University of Maribor, both of which are in Slovenia, which borders Italy to the west and Austria to the north. Juric holds both a Bachelor’s and Doctorate in computer science from the University of Maribor.
Q: Tell us about the Cloud Computing and SOA Competence Centre at the University of Maribor/Ljubljana.
A: The Cloud Computing and SOA Competence Centre has two important objectives. The first is to do research related to cloud computing and SOA. The second is to perform knowledge and technology transfers between the university and companies. In relation to research, the most recent achievements of our Centre have been versioning extensions for BPEL and WSDL and the integration of SOA and EDA. As for knowledge transfer, the Centre has facilitated several large-scale projects and helped companies adopt new technologies.
Q: What do you see as the major issues related to cloud computing and SOA competence?
A: Cloud computing is still not well understood by many people. Most often people think cloud computing is analogous to using remote servers in a datacenter. Although this is the so-called Infrastructure-as-a-Service, cloud computing offers much more. It frequently brings up the question, is it safe to store my data remotely? SOA, on the other hand, is not new anymore and people tend to have a reasonably good understanding of it.
Q: Are there still some misconceptions that you encounter about SOA today?
A: There are people who do not differentiate SOA as an architecture from using a bunch of Web services. Finally, there is the issue of SOA complexity, which is probably the major reason for unsuccessful SOA projects.
Q: Tell us about the developer culture in Slovenia.
A: The developer culture in Slovenia is well established. However, Slovenia is a small country with only 2 million inhabitants so the developer community is not very large. Companies are also faced with a deficit of skilled developers. As a consequence, jobs are not difficult to get and the salaries are good.
Q: What does the future of cloud computing hold for us?
“Cloud computing has the potential to change the way we use computers in the future.”
A: Cloud computing has the potential to change the way we use computers in the future. Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS) are very important concepts. Today, it is too early to forecast the impact cloud computing will have on the software community, on the hardware community, and on users. However, we might well be in for a big change in the coming years.
Q: Could you share some of your reactions to Java Platform, Enterprise Edition (Java EE) 6?
A: Java EE 6 is an important step forward. Java EE has been massively used in the back end by many companies. I have personally participated in many projects where Java EE was the selected platform. It is important for Java EE to evolve. I would be glad if it evolved a little faster, particularly in relation to cloud computing. We can see that the competition is not sleeping regarding PaaS.
Q: Oracle developer Brian Goetz, author of Java Concurrency in Practice has said, ”Often, the way to write fast code in Java applications is to write dumb code -- code that is straightforward, clean, and follows the most obvious object-oriented principles…Because compilers are written by humans who have schedules and time budgets, the compiler developers focus their efforts on the most common code patterns, because that's where they get the most leverage. So if you write code using straightforward object-oriented principles, you'll get better compiler optimization than if you write gnarly, hacked-up, bit-banging code that looks really clever but that the compiler can't optimize effectively. So clean, dumb code often runs faster than really clever code.” What's your response?
A: This might well be true. On the other hand, code execution speed is becoming less and less an issue, at least in the projects that I work on. Today, servers and computers in general are fast enough in most cases, so that every last millisecond does not count. In my opinion, it is often more important to write code that is relatively easy to maintain and extend.
Q: You are the co-author of a 2002 book, J2EE Design Patterns Applied. Fellow Java Champion, Heinz Kabutz, said, “In my experience, good object-oriented design tends to produce faster and more maintainable Java code. But what is good code? I find it easier to classify ‘goodness’ by using good object-oriented design patterns. I usually encourage software development companies to train all of their programmers in design patterns, from the most junior to the wise architect. Teams that employ good design patterns find it much easier to tune their code, which will be less brittle and require less copying and pasting.” Do you agree?
“In my experience, not many developers really think in terms of patterns when they design and develop applications. There is definitely room for improvement.”
A: I fully agree. I think that design patterns and patterns in general are important, particularly for larger development teams. Sticking with them definitely results in better code, particularly from the maintenance perspective. It is, however, also true, that not many developers really take the time to fully understand the patterns. They might learn GoF patterns and some of the Java EE patterns. But at least in my experience, not many developers really think in terms of patterns when they design and develop applications. There is definitely room for improvement.
Q: What are the advantages and disadvantages of Java EE for cloud computing?
A: Java, and particularly Java EE, is a proven and well-known platform for enterprise application development. Since it is not bound to a specific platform, it has some “natural” benefits for cloud computing. On the other hand, Java EE requires some deep consideration as to whether it should be used as a cloud platform or not.
Q: In coming years, what will applications/software look like on the cloud? Will they be Web applications? Web services? Or something entirely different?
A: From the end-user perspective, the software in the cloud will probably not differ from traditional applications in terms of the user interface. Web applications will probably evolve in the direction of rich Internet applications. However, cloud applications will have to offer services, which will enable much easier integration and interoperability than today. Given that they will be hosted in large and powerful datacenters, I can imagine some added intelligence on the user interface side that will be possible with data analysis, pattern matching, location, and other means that are impractical today.
Q: What effect is cloud computing having on open-source development?
A: I do not think that cloud computing will have any significant impact on open source. Open source will stay as important as it is today, or it might even use the cloud to increase its importance.
Q: What should Java developers understand about the relationship between BPEL (Business Process Execution Language for Web Services) and Java?
“I would like to see an XML data type in Java, without all the hassles with JAXB, mappings, or DOM.”
Matjaz JuricJava Champion
A: Probably the most important thing to understand is what should be programmed in Java and what should be programmed in BPEL. There is still some confusion. BPEL is for the process logic, while Java is for functionalities. Together, BPEL and Java form a strong alliance and enable faster development and maintenance of enterprise applications and their integrations. On the other hand, the integration between Java and BPEL could be improved. There have been different approaches, including Java snippets. I would like to see an XML data type in Java, without all the hassles with JAXB, mappings, or DOM.
Q: Where in the process of programming do you have the most fun?
A: I prefer to develop business logic, because you can do a lot in a relatively short time. I don’t like to develop user interfaces because it requires a lot of “boring” code where you do all the necessary checks and controls.
Q: What are the most exciting things happening with emerging Java technologies and architectures related to SOA and cloud computing?
A: What I like about the emerging technologies is that they open up new opportunities. They also require that you start to think differently. For example, SOA introduced some important changes to the world. In the world of services, we have seen that object-oriented concepts on the server side are not always the best solution. Cloud computing introduces new platforms that will change the way we architect software. Will the multi-tier architecture still be applicable for the cloud? Will the SOA concepts, such as ESB (Enterprise Bus Service), be good enough for the cloud?
Q: How would you help young Java developers, just out of school, prepare for their first job interview?
A: I would recommend that they get as much detailed knowledge as possible. In the last few years, I have had contacts with several managers and I have received the impression that job interviews can be very different. So I think deep knowledge is the best path towards getting a job—however, I’m not only talking about technical knowledge. A developer today should also have other knowledge, such as project management, communication skills, and so on.
Q: The Java class that you couldn't live without is...?
Q: What recent changes to the platform have made your life more complicated?
A: I cannot recall a single change that has complicated my life. I think that all the people that stand behind Java development deserve big congratulations for simplifying the Java platform and making life for developers and architects much more pleasant.
Q: What are the biggest mistakes that businesses make in deploying cloud computing?
A: In my experience, most businesses still think of cloud computing only on the Infrastructure-as-a-Service level. This means that they think about the cloud just as a way to use virtualized servers that are somewhere in the Internet. This is, of course, important and can result in significant savings; however, cloud computing offers much more.
Q: What's the most fun you've had working with Java technology?
A: About 10 years ago, I worked on a project where we measured and optimized the performance of RMI and RMI-IIOP. It was great fun to set up all the testing environments, run the tests, identify the bottlenecks, and so on.