My Java EE Platform Yearly Study Report

    This post is an annual study report on the Java EE platform.
    He will be useful to me for his reporting. Maybe the post will be useful to those readers of the Habr who are planning to teach Java.

    So. In November 08, I decided to learn how to program in Java.
    Initial data:
    • experience in telecom,
    • little experience programming in php.
    Goal: Become a Java web developer.

    The first stage is acquaintance.

    After a short google on the topic, I decided to start the study with Wikipedia.

    The articles gave me an idea of ​​the language and platform as a first approximation. Almost everything, except general phrases, was not clear to me.

    The second step is the selection of books for learning Java SE.

    As a tutorial, I decided to choose Thinking in Java, Fourth Edition by Bruce Eckel . I did not regret choosing a book. The book is very easy to read, you can return to it more than once, more and more delving into the language. I started a large notebook and began to write out pieces of code, definitions, errors that I encountered while studying the language.

    Development environment
    -Good afternoon. Please tell me a good development environment for Java.
    Next Wednesday will be very good for Java development.

    For the first few months, following Bruce Eckel’s advice, I didn’t use any IDEs. After I already got my hand in typing public static void main (String args []) ,
    I decided to install Eclipse. I didn’t trifle - I immediately downloaded the EE assembly ( Eclipse IDE for Java EE Developers ).

    The third stage is the “Hello world” program.

    Approaching the study of standard libraries, I realized that I’m bored of typing examples from a textbook, I need to sketch out a few tasks that I can already solve using Java SE. My completed tasks:
    0. Write Fifteen . (Inspired by the site )
    1. Create the Pinger utility - it monitors the availability status of network nodes. Displays the availability table.
    2. Create the Chrome Bookmarks Reader Utility - to easily import tabs from Chrome into an external xml file.

    Options for tasks:

    It is worth noting that at this stage I began to look for other resources to continue my studies. A breath of fresh air gave me the site of Anton Saburov - . He allowed to systematize already available information about Java SE.

    The fourth step is getting to know the web.

    As a resource for exploring Java web programming, I decided to select . These online courses are taught by Sun Sang Shin, a Korean employee. The site has course schedules, their contents, homework. In addition to knowledge, an additional motivator for taking the course is the “ graduate certificate ”, which Sang Shin posts on his website.

    The fifth stage (current) is again the Hello World program.

    Having a heap of not too systematic knowledge of the basic technologies of the EE platform, I decided to streamline them, putting them into practice. I came up with a task: schaanCMS on the Java EE platform.

    Base CMS:
    1. Authorization system.
    2. CMS framework.
    3. Office menu.
    4. Sections of various degrees of nesting
    5. Article editor
    6. Mini-nagios module (monitoring devices and services)
    7. Ticket module (processing customer requests)
    8. The module intercession on duty (the schedule of system administrators)
    9. On top of CMS - help section (for system administrators)

    I plan to introduce the system at work for use in everyday life.
    I want to make functional for monitoring active network equipment and network services (mini-nagios), a ticket module for processing applications from the customer service department, a help section for duty administrators.

    The sixth stage is work.

    If at the development and testing stage the schaanCMS system proves its need, we will implement it at work.


    1. Private I was able to master the basic technologies of the Java platform in order to start development.
    2. Are common. Google has enough information to learn web technologies on its own. (:

    That's all for now. I wish you all success in your endeavors!

    A few notes:

    1. It is worth noting that throughout the training I tried to actively use the official documentation on the JDK, SDK . If you encounter problems, I first tried to solve it by reading the specifications for the API, and only then climb into Google.
    2. At the beginning of my training, I became a victim of advertising and bought the “book of a renowned programming guru,” Herbert Schildt - Complete Java Reference, 7th Edition . As for me, the book has poor translation and not enough vivid examples. Well, as a reference, it is better to use the official documentation. So that.
    3. I had moments when it seemed to me that I had chosen the wrong path and that Java was too complicated and complicated. I simply lost interest in learning. Then the wonderful video courses of Stanford University CS106A came to my aid (the video is on youtube). The courses are taught by such a groovy man that I want to forget about the difficulties of programming. Cap tip: SUN == Stanford University Network.
    4. To study Spring, I decided to read - . Simple and clear.
    5. For the final and irrevocable systematization of the language, I decided in a couple of months to pass the SCJP certificate exam .
      Purpose : to know the language perfectly.
      Motivation to study : a beautiful certificate.
      Motivation for a quality study : you will have to cram a lot of material, because you do not want to fail the exam, which costs $ 300.

    Habrauser notes:

    1. To prepare for SCJP and to organize knowledge in SE, you can use the free and at the same time high-quality simulator from ExamLab .
    2. In addition to the free development environments NetBeans and Eclipse, habruble users recommend taking a closer look at the commercial IntelliJ IDEA . It is free for development on Java SE and you need to pay a denyuzhku for it if you want to work with EE (although in this case there may be nuances ).

      “IDEA, unlike the others, is not built as a“ tool for geeks ”, it does not make you think“ where to poke here ”, it tells you how to do better. Beginners learn significantly, at times, faster with it. ” ( # )

      “Eclipse is generally advised to beginners as it is free. Everything in it is super as long as you are dealing with a “clean” Java code, debugging it and everything that does not go beyond launching a single project with main (). As soon as you try to start an arbitrary application server, or want to use the wizard for the XXX framework (especially to refactor the code written using such a framework), hemorrhoids begin, because the plugins are either written by curvature free developers, or are poorly compatible with the current assembly, or do not work with each other and so on and so forth. My experience says that than losing performance later, it’s better to immediately retrain on IDEA. Reaching its limits is quite difficult, and glitches, if they happen, are uncritical and fix quickly. ” ( # )
    3. Very good and well-written articles for beginner Java developers live at
    4. Regarding the development of its CMS. Opinions were expressed that the amount of work to write it is quite large, and it is very easy to make mistakes in choosing the right architecture (due to lack of experience). Therefore, the issue of developing a CMS remains open. Perhaps I will limit myself to writing small web-oriented utilities, each of which will use one or another technology and perform a simple task.
    5. Regarding the employment and knowledge of frameworks. More experienced comrades say that you should not delve into web frameworks for Java. It is worth knowing in general terms what JSF, Struts, Spring, Hibernate are and what they are used for. The emphasis in preparation is better to do a detailed study of servlet containers ( Tomcat, Jetty ) and web services .
    6. Regarding knowledge of assistive technologies and tools.
      “A project in Java is most often not one person, and sometimes even not one team. I always pay attention to whether the “infrastructure” tools are mentioned in the resume - especially Maven (or, worse, Ant), whether a friend knows how to write tests, whether he understands how to perform stress testing and how to draw the right conclusions from it, whether I am familiar with project management tools, for example, the JIRA bugtracker, knows whether SVN (also unknowing people come across), whether it can use Linux (at least restart Tomket and see if the disk space runs out). It is very good to devote some time to studying java reflection (because it is one of the keys to understanding how jvm works). In my opinion, the subtleties of language proficiency are completely unimportant if the final product cannot be assembled from the console or you cannot provide the environment, in which it will be executed. Using the right tools is half the success, the other half is experience. Nuances concerning programming (non-critical for performance, such as how to write more beautifully) are not important at all ”. ( # )

    Thanks to everyone who participated in the discussion of the article. Your comments are very valuable to me and to other newcomers like me.

    Also popular now: