
Recently on Habré there was a
topic about sponsoring Apache by Microsoft. But either the author didn’t understand the topic, or the news resource the link to which was presented: in general, the impression was that MS was sponsoring the development of the Apache Web server. In fact, Microsoft sponsored the Apache Software Foundation, which consists of many projects, and as it became known from the
Microsoft blog, they sponsor and use not only, and not a few Web-server:
“It’s a strong endorsement of the Apache Way,” he said. We have worked with this software for the last year. "
')
Unfortunately, there are not so many posts about Java on Habré, so in this I will try to tell you about many important and interesting parts of the Java world, and at the same time I will tell you what kind of zagadadny Apache POI & Axis2 is.
Open source
Since we started our conversation with the Apache Software Foundation, let's continue it. For any Web developer, Apache is primarily a Web server, and for many of them, this is
just a Web server. However, if you ask a Java developer about his favorite ASF project, it does not necessarily have to be Apache HTTPD. There are more than fifty top projects in ASF, almost all of them are written in Java. In the Microsoft quote, for example, we are talking about Apache POI - libraries for working with Office & Apache Axis2 files (Apache Web-services subproject) - libraries for working with SOAP / REST / ... I will not describe all ASF projects, because most of they are all the same for Java developers, so I’ll note only those that might interest Habr's readers:
- Hadoop - distributed computing, Google BigTable response;
- Shindig - server implementation for Google OpenSocial applications;
- Wicket is a web framework. Why did I select it? HTML containing 0% software code, cleaner than JSP / ERB / Django Templates and everything else;
- Lucene - full text search.
I hope that after this story the word “Apache” will remind you not only the Indians and the Web server. In general, Java has a very strong Open Source movement: Apache & Eclipse Sofware Foundations, the largest (among languages) number of SourceForge projects, as well as Java.net, CodeHaus, and many, many other projects.
Standards
If any of you wondered: “How did J2ME crawl on all the phones in the world?” Or “Why did Oracle, IBM, SAP, Red Hat provide their own J2EE-based Middleware?” Then standards are one of the answers to this question. All components in the Java world are standardized - this allows vendors to create their own virtual machines, application servers, libraries that will be compatible with each other if they follow the standards. There are 2 keywords here: JCP (Java Community Process), a process that defines the adoption of the JSR (Java Specification Request) standard, consisting of a specification, implementation, and a set of tests to verify compliance with the standard.
A lot of criticism often spills on JCP, sometimes because of disagreements in decision-making, sometimes for excessive bureaucracy. However, the community did not always follow the standards: until recently, many developers preferred to use the Web-stack Tomcat + Spring + Hibernate instead of J2EE 1.4. JCP responded and the implementation of EJB 3.0 can be called a clone of Hibernate, and the data access standard (JPA) unites them and allows you to replace one technology under the hood with another. The creators of Spring are the main contributors to the next sixth revision of JEE.
JvmThe Java Virtual Machine (Sun's implementation called HotSpot) rightfully deserves a separate article. I will not talk about the architecture and the basic principles of the JVM, which make the Java platform suitable for tasks that require C ++ speed, but I’ll talk more about current trends. Probably many will agree with me that the main one is multilingual. Over the past year, Sun hired JRuby & Jython developers, Google uses Rhino on its servers and will be the main committer in the next version after publishing the JavaScript2 (ES4) specification, well, according to Caucho, their Quercus (PHP implementation for JVM) is not inferior to Apache + mod_php + APC. Much is being done in the development of the next OpenJDK seventh version to improve support for dynamic languages, but now you can create PHP / Ruby / Python / JavaScript applications and run them on the JVM. In addition to these popular languages, there are two more Grovy & Scala JVM-only languages that can be called dynamic and functional Java. It should be noted that the upcoming versions of the three leading Java IDEs support all of the above languages.
I personally do not expect the emergence of The Next Big Language, but I expect the emergence of unified platforms. Already, developers use common development environments, version control systems. The next step in my opinion is development in various languages under the JVM, CLR, Tamarin.
Google web toolkitWhat is the main trend in the development of the last decade? That's right - Web. What about user interfaces? And again correctly - AJAX. We use it in the current project and are very pleased at the moment. For those who still do not know, GWT is a JavaSctipt Java code compiler, it allows us to use Java (and therefore all Java Best Practices) on the client and generates very fast JavaScript code on Google’s statements. Google has good documentation on the site, but if you want to embed GWT into your current environment, I can recommend the book Pro Web 2.0 Application Development with GWT, which provides examples of integration with the most popular Java components.
Kilim
This
framework is probably still not familiar even to many Java news developers following the news in the world. One of the most popular explosions of the blogosphere has recently become Erlang, which allows you to create distributed applications built on the Actor model. The only answer until recently was the Actors library for the Scala language, the new answer is Kilim. I can hardly explain all the subtleties of work, but I can advise you to read the documentation on the developer’s website and listen to his presentation on Google Tech Talks.
IntelliJ IDEA
As DHH once once said (the creator of Ruby on Rails) once said:
“While I was doing java, I’m not really interested in flipping over the language.”
IntelliJ IDEA is probably my favorite product associated with the word Java. It also takes pride in the fact that this is the result of the work of our Russian programmers. Programming something like a pair in it, because the environment all the time tells you your mistakes or alternative solutions. With IDEA, you can also monitor all trends in the Java world - for example, the full plugin for Groovy & Grails is only in it at the moment. It is also gratifying that all the components we use (Spring, Hibernate, GWT, Flex, Maven, JUnit) are supported out of the box. By the way, even though this product is paid, you can use it for free. Hint: Jetbrains has an EAP that allows you to download and use a fresh working IDEA build for a month. EAP come out once a week. Got it? ;)
I think that is enough for the first time. In some mail list I came across a comment ~ "Java developers are poor, because they live in their little JVM little world." So ... I would like to wish everyone such worlds, and if this article is interesting to someone, then in the Java world there are still many interesting places that I haven’t reached and will try to do it next time.