Dr. Venkat Subramaniam is an award-winning author, founder of Agile Developer, Inc., and an instructional professor at the University of Houston. He has trained and mentored thousands of software developers in the US, Canada, Europe, and Asia, and is a regularly-invited speaker at several international conferences. Venkat helps his clients effectively apply and succeed with agile practices on their software projects.
Venkat is a (co)author of multiple books, including the 2007 Jolt Productivity award winning book Practices of an Agile Developer. His latest book is Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions, wherein he expresses renewed enthusiasm for the Java platform. You can reach him by email at email@example.com or on twitter at @venkat_s.
He is both a JavaOne Rock Star and a Java Champion.
Q: Tell us about your new book, Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions.
Subramaniam: I have not been this excited about Java for a long time and this book certainly shows this. It's been a privilege to work with multiple languages on the JVM over the past few years, especially digging into Clojure, Groovy, and Scala. When I saw the developments in Java 8, my first question was: “How close does Java get to the capabilities of the other languages?” I asked how much of functional programming, parallel collections, lazy optimizations, and so on, can I practically do?
The answer definitely surprised me. Java 8 did not merely attempt to provide lambda expressions. There are several gems in there -- from a number of optimizations to a wealth of library functions -- that make the life of programmers easy if they choose to adapt to the functional programming model.
Programmers interested in using Java 8 are not just looking at learning a new syntax -- they need to go through a paradigm shift. It's not just a different way of writing code; it's a better way to think and design software. In the book, I take programmers familiar with OOP in Java through the essentials they need to quickly become proficient with the functional programming capabilities in Java 8.
Q: Tell us about what developers will learn at each of your JavaOne sessions.
Subramaniam: I am giving six talks at JavaOne 2013.
Two of the talks are related to Java 8, one on "Programming with lambda Expressions" and the other on "Designing with lambda Expressions." In the first talk I walk the programmers from what they're familiar with to the new way of coding with lambda expressions. In the second talk I show how some of the design patters they're familiar with in Java will change moving forward as they begin to apply lambda expressions.
Lambda expressions make heavy use of invokedynamic and, even though programmers using Java predominantly will not use that feature directly at the code level, the geeks in each of us would want to know what's happening under the hood. One of my talks is focused on "Demystifying invokedynamic."
In "Ten Cool Things We Can Do with Popular JVM languages" I show features from Scala, Groovy, Clojure, and Java 8 that can make programmers quite productive. Since this involves mixing the languages, I also have a talk that shows how to really do that, in "Integrating JVM languages."
Shared mutability has been the number one source of concurrency issues. In "Taming Shared Mutability with STM" I show how to use the software transaction memory to manage shared mutability. I will be using the Clojure library from Java so programmers can see how they can continue to write Java code, but leverage some of the powerful features that are available on the JVM platform.
Q: What have you been working on lately?
Subramaniam: The past few weeks have been quite exciting. I have been doing training and mentoring for well over a decade now, mostly for large companies. Training courses are great -- they provide good interaction and can help developers come up to speed on a topic in a short amount of time. But learning has to be continuous and there are quite a few resources for that already on the web. The most precious thing today is having anyone's attention. Long presentations on the web simply don't get that. I am creating a new site for programmers to learn continuously, from bite-size presentations. The past few weeks have been intense, as I'm nose down implementing the core features. The site should go live in a few weeks.
Q: How do you assess the state of Java today?
Subramaniam: Java is arguably the most popular language today. I was one of those skeptics who believed that the time had come for Java to step aside and for other languages to take over. Java started out as a language simpler than C++ and it really brought the concept of managed runtime to the mainstream. While Java had done a lot of things right, it had not kept up with the developments and changes in other languages. For example, C# started out as a marginally better language than Java, but went on to bring several improvements over the past few years. So I started having my doubts about the future of Java.
All of that is changing in Java 8. The Java language team did not give in to pressure and quickly bring an arbitrary set of features into the language. They took the time to analyze the next moves for the language and put in real hard work to bring not only relevant features, but those that will meet the demands of the enterprise. I think the future of Java is quite bright given the recent changes.
The word "Java" is also beyond just the language. The Java platform has turned into one of the most ubiquitous, versatile, and vibrant environments. Interoperability between the languages is quite easy and with lambdas coming to Java this only gets better. We have several ways to leverage the capabilities of the platform and overall this brings more power and freedom to the programmers to create their applications.
Q: Aside from your sessions, what do you have planned for JavaOne?
Subramaniam: As soon as the schedule builder for JavaOne was released, I went online to schedule my time. I am really looking for some deeply technical talks. I am planning on attending some sessions that I know little about so I can gain insights into those areas. I am also keenly interested in meeting developers, the hallway conversations, the dinner conversation, and also to meet some good friends. I can't wait to rub elbows at the event with some of the smart minds in our field.
Subramaniam's 2013 sessions:
CON2054 “Ten Cool Things We Can Do with Popular JVM Languages”
CON2055 “Programming with Lambda Expressions in Java”
CON2076 “Demystifying invokedynamic”
CON2077 “Integrating JVM Languages”
CON2078 “Taming Shared Mutability with Software Transactional Memory”
CON2079 “Designing with Lambda Expressions in Java”