Java world



    Recently on Habré there was a topic about sponsoring Apache by Microsoft. But either the author has not completely understood the topic, or the news resource, the link to which was submitted: in general, it seemed 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 just a Web server:

    “It is a strong endorsement of The Apache Way, and opens a new chapter in our relationship with the ASF. We have worked with Apache POI, Apache Axis2, Jakarta, and other projects in the last year, and we will continue our technical support and interoperability testing work for this open source software. ”

    Unfortunately, there are not many Java posts on Habré, so in this I will try to talk about many important and interesting corners of the Java world, and at the same time I will tell you what mysterious Apache POI & Axis2 are.



    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 it is onlyWeb server However, if you ask a Java developer about his favorite ASF project, it will not necessarily be Apache HTTPD. ASF has more than fifty top projects, almost all of them are written in Java. In a Microsoft quote, for example, we are talking about Apache POI - libraries for working with Office & Apache Axis2 files (a subproject of Apache Web-services) - libraries for working with SOAP / REST / ... I will not describe all ASF projects, because most of they are still for Java developers, so I’ll only mention those that might interest Habr readers:
    • Hadoop - distributed computing, Google BigTable response;
    • Shindig - server implementation for Google OpenSocial applications;
    • Wicket - Web Framework. Why did I highlight it? HTML containing 0% of the code is 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 of the Indians and the Web server. In general, Java has a very strong Open Source movement: it is Apache & Eclipse Sofware Foundations, the largest (among languages) number of projects on SourceForge, as well as Java.net, CodeHaus and many, many other projects.

    Standards



    If one of you wonders: “How did J2ME crawl on all the phones in the world?” Or “Why do Oracle, IBM, SAP, Red Hat provide their Middleware based on J2EE?” - then the 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 determines 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.

    The JCP often pours out a lot of criticism, sometimes because of disagreements in decision-making, sometimes because of excessive bureaucracy. However, the community did not always follow standards: until recently, many developers preferred to use Web-stack Tomcat + Spring + Hibernate instead of J2EE 1.4. JCP has responded and the implementation of EJB 3.0 can be called a Hibernate clone, and the data access standard (JPA) combines them and allows you to replace one technology under the hood with another. The creators of Spring are the main participants in the next sixth revision of JEE.

    Jvm

    The Java Virtual Machine (Sun's implementation of HotSpot) rightly deserves a separate article. I will not talk about the architecture and basic principles of the JVM, which make the Java platform suitable for tasks where C ++ level speed is required, but I will talk more about current trends. Probably many will agree with me that the main one is multilingualism. 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 the publication of the JavaScript2 (ES4) specification, but according to Caucho, their Quercus (PHP implementation for JVM) is not inferior to Apache + mod_php + APC Much is being done to develop the next OpenJDK version 7 to improve support for dynamic languages, but now you can create applications in PHP / Ruby / Python / JavaScript and run them in the JVM. In addition to these popular languages, there are two more Groovy & Scala JVM-only languages, which can be called dynamic and functional Java. It is worth noting that the upcoming versions of the three leading Java IDEs will support all of the above languages.

    I personally do not expect the appearance of The Next Big Language, but I expect the appearance of unified platforms. Already, developers are using common development environments, version control systems. The next step in my opinion is development in various languages ​​for JVM, CLR, Tamarin.

    Google web toolkit

    What is the main trend in the development of the last decade? That's right - Web. And in user interfaces? And right again - AJAX. We use it in the current project and are currently very pleased. For those who are still not up to date, GWT is a Java code compiler in JavaSctipt, it allows us to use Java (hence all Java Best Practices) on the client and generates very fast JavaScript code on assurances from Google. Google has pretty good documentation on the site, but if you want to embed GWT in 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 Frameworkmost likely not even familiar to many developers who follow the news in the Java world. One of the most popular explosions of the development blogosphere recently has become the Erlang language, which allows you to create distributed applications built on the Actor model. Until recently, the only answer was the Actors library for the Scala language, the new answer is Kilim. I can hardly explain all the details of the work, but I can advise you to read the documentation on the developer's site and listen to his presentation on Google Tech Talks.

    IntelliJ IDEA



    As DHH (creator of Ruby on Rails) once said in an interview:

    “While I was doing Java, IntelliJ was the only thing that kept me from killing myself in frustration over the language.”

    IntelliJ IDEA is probably my favorite product associated with the word Java. He also takes pride in the fact that this is the result of the work of our Russian programmers. Programming in it is somewhat reminiscent of pairing, because the environment all the time tells you your mistakes or alternative solutions. Using IDEA, you can also follow all the trends in the Java world - for example, a full-fledged plugin for Groovy & Grails is only in it at the moment. It is also encouraging 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 the latest IDEA work build for a month. EAPs are released once a week. Did you catch it? ;)

    I think that’s enough for the first time. In a mailing list, I came across a comment ~ "Java developers are poor because they live in their own little JVM world." So ... I would like to wish everyone such worlds, and if this article is of interest to someone, then in the Java world there are still many interesting corners to which I never reached and will try to do it next time.

    Also popular now: