Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage Interviews Yakov Fain on the State of Java, JavaScript, Web Development

Yakov Fain on the State of Java, JavaScript, Web Development


1. Yakov is a Java champion who likes other languages as well. That is the way he prefers to be introduced. Yakov, would you like to explain yourself?

Barry's full question: I am Barry Burd, a professor at Drew University in Madison, New Jersey and I am interviewing Yakov Fain at QCon New York. Yakov is a Java champion who likes other languages as well. That is the way he prefers to be introduced. Yakov, would you like to explain yourself?

Hello, first of all. Yes, my name is Yakov Fain and I work for Farata Systems and I do like other languages besides Java. These days, calling yourself an X language developer or an X language software developer – I don’t think it is the right thing to do because there are so many different languages in the world now and Java is one of them. It is super-popular, but it is not the only one. There are great communities in other languages as well and in particular, I like working with front-end, with web technologies, with JavaScript and JavaScript related technologies. So, JavaScript is huge these days, so I am a Java developer who likes other languages, in particular JavaScript and the rest of the front-end development.


2. Are there any programmers left who do just one language, who are not polyglot?

You see, larger companies are stiffer. I mean, they handle the part of the architecture, they tell you which languages to use. At this point, I work for a small company so I am happy to be able to chose what I like and to experiment with languages and actually we even put in production applications that are written in different languages. But Java, of course, is a main one on the server.


3. So Java is 20 years old. Does it still have a bright future?

Yes. In my opinion, yes. It was nice to me, it was nice to my family for all these years - I have been doing Java for 17 years - and it is stable, it is everywhere and the community of Java Developers is unique in a way that people are sharing their experience online. You are going to find technically an answer to any question that you will ask and people are readily sharing is with you. In the enterprise world, the server side is written mostly in Java. I would say that less than a half of the server side software are written in other languages. But Java is stable. The release of Java 8 that happened last year was huge in terms of the magnitude of the changes. It can only be compared to Java 5, which was released 10 years ago. I enjoy this language and I really like it a lot.


4. I am going to ask you to look into a crystal ball. How many years have we got for Java being a primary language?

Easily another 5 to 10 years. Easily. I see some attempts to introduce other languages on the server side. Again, the selling point for JavaScript developers: since you know JavaScript, now you can program it on the server as well and because of that, you may stick to one language. I do not think this is the future, but at least it will give Java some tougher competition. But I believe that Java will remain the number one language on the server-side for many years.


5. Can you comment on your work in JavaScript? Is it, from what I understand, an undisciplined language? Was that the right word to use for it?

I would use the word a “forgiving” language. Java is not that forgiving, but it helps us developers a lot. If I am writing something and I made a mistake, the compiler will immediately say “What are you doing?” JavaScript is an environment that is a lot more forgiving than that and because of that, you have to do a lot more testing during the runtime. Of course, there is static code analyzers in Java. It is not like it is absolutely not helping you in any way if you use tooling. In particular we like IntelliJ – not IntelliJ, but JetBrains products such as IntelliJ IDEA, we like WebStorm, but even other editors can help you out with the static code analyzers. But, when you write software in Java, at least you know where the program will be running. You know you need a JVM of so and so version and this helps a lot. Now, imagine that you need to write a program in Java that has to run on any version of the JVM, on any operating system.

So, basically, this is what we have in the JavaScript world. You write a program in JavaScript and it has to run in all or any browsers. You do not even know where. So, in that regard, it is a much more dangerous environment, I would say. It is a Wild West, I would say. Given the fact that the language is forgiving, that the language is not compiled so it may not be that easy. Unfortunately, I have seen that some Java developers look down on people who do front-end development, on people who do JavaScript. I strongly disagree with that. In my opinion, when a Java developer says that programming for the server is cool and the front-end is easy, that it is not for them, I do not believe that. I believe that these people simply do not know how to program front-end and that is why they are trying to give this kind of explanations. So, it is interesting and it is challenging.


6. It looks like you are very much interested in web development. What frameworks do you use? What other languages besides JavaScript do you use?

You will be surprised but there is more than 100 languages today that are compiled into JavaScript. The proper word would probably be “transpiled”, because when you convert a program from one source code to another source code, we use the word transpilers. There are more than 100 of those. The thing is that JavaScript itself, the pure JavaScript, is not overly productive and we have seen that especially when we started to switch from other framework for the web. If you remember, there was Adobe Flex that is not in favor any more, but it was super productive. When we started to switch to JavaScript, we noticed that productivity of our developers dropped like five times. Whatever you could do in Adobe Flex in one day, you needed five days to do it there. We tried to find a better, more productive language or frameworks. We could not do that for a while. Recently, last year, we found Google Dart as a language.

If you know Java, you probably know 80% of the syntax of Google Dart. It is really nice and more productive than JavaScript, but it is compiled into JavaScript and you deploy in JavaScript anyway. Last year we developed an application for the insurance industry in Dart and a server-side in Java, of course, and we deployed it in production and the experience was good. We used Dart and we used Angular Dart, which is a port of the super-popular framework AngularJS to Dart. Now, how long is the Dart language going to last? I do not know. Maybe not. But at least it allows us to be productive today. What other alternatives are there? ECMAScript 6, which is a development new version of JavaScript and which you can use today and we hope that it is going to increase our productivity. We started using it as well. Regarding frameworks, I tried different ones. The current framework that we are using is Angular and in particular, the upcoming version Angular 2. I like it a lot.


7. What kinds of hassles do you face in terms of standardization? You are talking indeed about many products and many different kinds of users, many different kinds of clients, browsers and so on and so forth. In that world, what do you do about standardization? What do you do about making sure that your work is viewable by all those who need to view it?

The standards remain the same. So, ECMAScript 5 and it is the most popular implementation of JavaScript remains the lowest denominator around the world. So every browser runs it today. Even if today we write using ECMAScript 6 or Dart or, now we also use another language from Microsoft called TypeScript, which is a superset of JavaScript - in any case we are converting the code into JavaScript or ECMAScript 5, which runs everywhere. So, in that regard we are compliant to the standard. The other development in standards we like is what is happening with web components. In particular, there is a standard for web components and there are different ways of implementing them.

It’s like when they even take an HTML tag and create your own component out of it and it is going to be encapsulated and it will extend that tag, so to speak. This is another way for developing standard compliant software. There are different ways of doing this. There is a way that is offered by the React community and ReactJS and there we are also looking carefully at Polymer from Google which, recently, during the Google IO they introduced version 1.0 of Polymer with a set of nice looking components and we believe that this is the way to go. I believe that because of these standards with the web components, many frameworks in JavaScript will disappear within the next 3-4 years. But it is a standard compliant community, anyway.


8. You mentioned one of my favorite topics, which is the annual Google IO Conference. What is the most exciting announcement that was made this year as far as you are concerned?

As I said, for me, this library Polymer was the most exciting. I am not into what version of a software will be deployable in Android phones or on these watches, but Polymer will have a serious impact on the entire community, in my opinion. If you talk to the people in the React community, they will say “No. Polymer is no good. We use our approach”, but in my opinion, today Polymer can become a good foundation, a good base for developing huge libraries of reusable web components. So, for me, the Polymer announcement is the most interesting from Google IO.


9. What is about Polymer that is the most important feature, in your opinion?

It is not like the most important feature, but I like the way they structure the components. You have a section where you write a class, you have a section where you write a view, they created a specialized component already if you wanted to do an AJAX kind of request to the servers – there is a component for that. So you can build the application like you are building a house from Lego toys and each component can then be encapsulated and they hope the community will embrace it and they will start creating these highly reusable components with a well encapsulated core. Again, it is important to see how they will perform. It is important to know if Google will support it and how the open-source community will embrace it, but I hope it will work out well.


10. What does a typical day look like in your world?

In my case, I work for different clients and I do different things. Sometimes I manage projects, sometimes I work as a team lead, I blog, I write books. In fact, I started to write a book with my colleague on Angular 2. We started to write it for Manning publishing and it is going to be called “Core Angular 2” and two months from now there should be three or four chapters published for the early preview release. So, I do different things basically, but to honest with you, I am mainly interested now in evangelizing Java and web together. Not by promoting a particular product, but the entire set for a full stack developer.


11. So you are a Java champion interested in other languages as well, an advocate for Dart, an advocate for Polymer unofficially, you still brand yourself as a Java developer. Is that correct?

Yes, I‘ll say so. I do not want to say like you said - that I am promoting – I like what I see, but I try not to fall in love with any software or framework in particular. So, today Dart did what it is supposed to do for us. If tomorrow there will be something else, I will be cheating on Dart. I am sorry. Software is a tool. I treat it this way. Today I have a set I like, tomorrow it may change.

Barry: And that is good.


Barry: Yakov, thank you very much.

Thank you for talking to me, Barry.

Aug 21, 2015