Yoshio, please introduce yourself
Dear Adam-san Thank you so much for providing me this great opportunity. I have been working as a Java Evangelist at Microsoft Japan since July 2015. And I’m one of the board members of the Japanese Java Users Group. http://www.java-users.jp/
Before I joined Microsoft, I worked as a GlassFish evangelist at Sun Microsystems Japan. And after acquisition of Sun by Oracle, I worked as a Java/Java EE evangelist at Oracle Japan for 5 years. My work at Oracle Japan involved planning, managing and speaking at many Java related technical conferences and events in Japan, such as JavaOne Tokyo, Java Day Tokyo, and Japanese Java Users Group events.
Here’s a sample of one of the many presentations I created during this period: http://www.slideshare.net/OracleMiddleJP/presentations?order=popular
And here’s my popular Japanese blog: http://yoshio3.com/
And I have also spoken att JavaOne San Francisco 2013: http://www.slideshare.net/OracleMiddleJP/javaone-2013-san-francisco-asynconcurrencyonee7
I joined Microsoft Japan in July 2015, and continue to be a Java Evangelist in Japan.
You worked in the past as Java EE Evangelist in Japan. How popular is Java EE in Japan?
Java EE has become very popular in Japan. After Java EE 7 was officially released in June 2013, many Japanese Java EE related books have been published and every year, Oracle Japan has held the Java Day Tokyo Java technology conference. All Java EE related sessions are usually full, and many Japanese developers refer to my presentation, shown here: http://www.slideshare.net/OracleMiddleJP/presentations?order=popular
Other Japanese developers have also been writing Java EE related content on their blogs. For example, Japanese developers have created the “Java EE Advent Calendar” every year. Here are the results of that effort for the past 4 years:
Java EE Advent Calendar (2012-2015)
- 2012: https://atnd.org/events/33783
- 2013: http://www.adventar.org/calendars/152
- 2014: http://qiita.com/advent-calendar/2014/javaee
- 2015: http://qiita.com/advent-calendar/2015/javaee
I started promoting Java EE since 2009 when Java EE 6 was released officially. At that time, most developers were not interested in Java EE, as up to then they had been using Struts/Spring/Hibernate or Japanese original framework. Since then the situation has changed drastically. These days, Japanese developers usually select from 3 options of Java EE/Spring(MVC or boot)/Play for developing the Java Web Applications.
Which application servers are the most popular in Japan and why?
This is a very difficult question. In the past, I was GlassFish evangelist. So a lot of developers around me use GlassFish/Payara in their development environment. I’ve heard that a lot of people are using Tomcat. In enterprise environments, application servers are very important. In these environments, WebSphere, WebLogic or JBoss EAP are more common. Recently advanced developers are not installing the Application Server on cloud services, but instead of installing the Application Server, they create standalone jar files which include a Web container (Embedded container) to create as a microservice. So it means that depending on the requirement, developers or companies will select the Application Server or container that best suits their needs.
You are working now as Java Evangelist at Microsoft. What is exactly your job?
I have two roles. First, I inform non MS customers about the changes to Microsoft’s culture to become more open, to attract new fans of new Microsoft. After Satya Nadella became the new CEO of Microsoft in 2014, Microsoft has drastically changed. For example, Satya has shared surprise messages, like “Microsoft Loves Linux” and spoke at the keynote of a major Apple event, including announcement of Office on iOS.
I have been working with the Unix OS and Java since university, so I don’t have as much knowledge of Microsoft products. However there is no problem in Microsoft now with this. Regardless of the OS and programing language, we can now provide any service for any language and OS on Microsoft Azure. For example, on Azure you can deploy a Linux or FreeBSD virtual machine running Java, PHP, Perl, Ruby or Node.js.
Finally, I loved Sun Microsystems as a company because Sun was leading and creating the next generation of IT technology. Like Sun, Microsoft is now changing to create the latest IT technology. Because of this I’ve become a fan of Microsoft and I love it now. As a Java evangelist at Microsoft, I enjoying informing new communities about the changes at Microsoft and promoting Java on Microsoft Platforms.
Second, As a Java evangelist at Microsoft, I get to provide technical information on using Java on Microsoft Platforms for both developers and administrators. My past experience is a great fit for this. For example, you may already know that 25% of virtual machines running on Azure are running Linux, and of course Java Web Applications can run on that. Recently developers worldwide are very interested in new technologies like DevOps, Microservices, and Docker. And of course these can be run on Azure too. I have created a Java DevOps (Git,Jenkins,Docker and Tutum on Azure) video demonstration here: https://youtu.be/K-AFA5D_0OM
You can also create your own service on Azure using Azure SDK for Java. As an example, here is a JSF sample program I created which uploads files to Azure Storage: https://github.com/yoshioterada/JavaEE7-App-On-Azure To create an authentication service, you can use Active Directory (85% of large enterprises use Active Directory). Using AD, you can create multi-authentication Applications by using 2-factor authentication by phone. This is very useful for Java developers and mission critical enterprise applications.
At JavaOne you presented how to push GlassFish / Payara to the Microsoft cloud. How hard is it?
In order to run the GlassFish/Payara, I recommend you one of these three easy options. I showed the demo of No.3 at JavaOne 2015.
- IaaS (Infrastructure as a Service)
- Cloud Service (Classic)
- Docker on Azure
- You can create a Linux (Ubuntu, CentOS etc.) or Windows Server in a Hyper-V virtualization environment. Based on a wizard base configuration in the Azure Admin portal screen, you can very easily create this. After you create the VM, you can install the GlassFish/Payara on the new VM by yourself.
- Cloud Service(Classic PaaS) provide a PaaS-type service. You can deploy a package which includes a custom JDK, App Server and target application, running on Windows Server. The Windows Server OS is managed by Microsoft. To package the application for deployment you can use a plugin in either an Eclipse or Intellij plugin. You can select the AppServer as Tomcat, GlassFish, Liberty, JBoss, or Jetty, or configure a custom server.
- Docker on Azure can run on a CoreOS or individual installation. I recently showed a demo which used the GlassFish on a Docker container. The Docker container runs on CoreOS created from the Azure Portal marketplace. You can create a GlassFish environment in only 20 minutes using the Azure administration portal.
How productive is Java EE?
For Java EE productivity, I recommend the NetBeans IDE. I created the following demo in Japanese using NetBeans and GlassFish: https://www.youtube.com/watch?v=qkOPAwr0YqY
As you can see, I could create an Ajax Web Application in only 11 minutes without any configuration. To create the same application, just install the NetBeans(bundled with GlassFish). This is very useful for developers for preparing a development environment. Java EE includes all of the things needed to develop the Web Application. If you don’t have enough knowledge of HTML 5, you can use Java Server Faces as the Web Framework. And if you would like to use HTML 5 more, you can use the JAX-RS RESTful Web Services. You can also take advantage of extensibility in Java EE. For example, if you would like to use another framework, you can include it in your application. For these reasons I recommend developers use the Java EE as a standard technology.
How important is the Java EE standard for you? Is your code dependent on proprietary application server features (like e.g. specific GlassFish or WLS features)?
The Java EE standard is very important for enterprise developers. There is a lot of non-standard technology in the world that should only be used very carefully. Backward compatibility, project roadmaps, management cost and activation need to be carefully considered. Java standard takes care of backward compatibility, as does Java EE. The project roadmap is shared with everyone by spec lead. Also, all Java specifications are decided under the JCP program, which is very open and transparent. Anybody can contribute to an individual specification. For example you can join “Adopt A JSR” program at https://java.net/projects/jjug/pages/Adopt-a-JSR-JP.
All of the code is able to run on a Java EE compatible application server except for one function - security. Until Java EE 7, developers needed to write and configure a proprietary authentication/authorization implementation. Java EE 8’s official release solves this with the included JSR-375 (Java EE Security API).
Take a look at the Java EE 8 APIs. Which of the APIs are most interesting / important to you?
For Java EE 8 I also created this Java EE 8 presentation in Japanese: http://www.slideshare.net/OracleMiddleJP/java-ee-8-41541611 I’m really looking forward to the Java EE 8 release. A lot of useful features will come to the world with this release. For example I’m interested in JSR-353(JSON-P),JSR-367(JSON-B),JSR-365(CDI),JSR-371(MVC) and JSR-375(Security).
If we use the JSON-B, we can treat JSON dates more easily. Also, JSON pointer and patch available in the next version of JSON-P are very useful. Since Java EE 6, CDI is one of the most important technologies in Java EE. Not only type safe loose coupling, but also other functions such as event processing. And CDI will have even more functionality in the future. In order to prevent becoming another big framework like EJB, the lightweight version of CDI will be available in the next version.
Finally security, provides a standard authentication/authorization API. If we are able to use it, we can get rid of all of proprietary security code from my applications.
Do you have any articles, screencasts or other resources you would like to share with us?
English [Entry Point] : Lots of options for Java Cloud developers with Azure! https://azure.microsoft.com/en-gb/blog/lots-of-options-for-java-cloud-developers-with-azure/
Yoshio - thank you a lot for the interview. And keep your Java passion growing at Microsoft!