This post is a report on the annual study of the Java EE platform.
He will be useful to me with his reporting. Maybe the post will be useful to those Habr readers who conceived to teach Java.
So. In November 08, I decided to learn how to program in Java.
Initial data:
- experience in telecom,
- little php programming experience
Objective: To become a web developer in Java.
The first stage is acquaintance.
After a short googling on the topic I decided to start studying with Wikipedia.
The articles gave me an idea of ​​the language and platform as a first approximation. Almost everything, except for general phrases, was not clear to me.
')
The second stage is the selection of books for learning Java SE.
As a tutorial, I decided to choose
Thinking in Java, Fourth Edition by Bruce Eckel . On the choice of the book did not regret. 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 into it pieces of code, definitions, errors that I encountered while studying a language.
Development environment-Good day. Please tell me a good development environment for Java.
- The environment next week will be very good for Java development.
For the first few months, following the advice of Bruce Ekkel, I did not use any IDE. Once already got my hand typing
public static void main (String args []) ,
I decided to install Eclipse. I didn’t get into a mess - I downloaded the EE build right away (
Eclipse IDE for Java EE Developers ).
The third stage is the “Hello world” program.
Going to the study of standard libraries, I realized that I was bored of typing examples from the textbook, I need to sketch out a few tasks that I can already solve with Java SE.
My completed tasks:0. Write
tag . (Inspired on the site
www.javenue.info/post/42 )
1. Create utility
Pinger - monitors the availability status of network nodes. Displays an availability table.
2. Create
Chrome Bookmarks Reader utility - for simple import of tabs from Chrome into an external xml-file.
Variants of tasks:
It is worth noting that at this stage I began to look for other resources to continue learning. A breath of fresh air was given to me by Anton Saburov’s website -
java-course.ru . He allowed to systematize already available information about Java SE.
The fourth stage is getting to know the web.
As a resource for acquaintance with web-programming in Java, I decided to choose materials
javapassion.com . These online courses are taught by Korean Sang Shin, working for Sun. The site has course schedules, their content, homework. In addition to knowledge, an additional motivator for passing the course is the “
graduate certificate ” that Sang Shin posts on his website.
The fifth stage (current) is again the “Hello world” program.
Having a pile of not too systematized knowledge of the basic technologies of the EE platform, I decided to streamline them in practice.
Come up with a task:
schaanCMS on the Java EE platform.Basic CMS:
- Authorization system
- CMS frame.
- Menu management.
- Sections of varying degrees of nesting
- Article editor
- Module mini-nagios (monitoring devices and services)
- Ticket module (processing customer requests)
- Watchdog module (schedule for system administrators)
- Above the CMS - reference section (for system administrators)
I plan to introduce the system at work for use in everyday life.
I want to make a functional for monitoring active network equipment and network services (mini-nagios), a ticket module for processing customer service requests, an informational section for duty administrators.
The sixth stage is work.
If during the development and testing phase the schaanCMS system proves its necessity, we will implement it at work.
Findings:
- Private I was able to master the basic technologies of the Java platform in order to start developing.
- Are common. Google has enough information for independent study of web technologies. (:
That's all for now. I wish you all success in your endeavors!
A few notes:
- It is worth noting that throughout the training I tried to actively use the official documentation on the JDK, SDK . If a problem arises, I first tried to solve it by reading the specifications for the API, and only then go to Google.
- At the beginning of my studies, I became a victim of advertising and bought “a book by a famous programming guru,” Herbert Shildt — The Complete Guide to Java, 7th edition . As for me, the book is distinguished by poor translation and insufficiently vivid examples. Well, as a reference, it is better to use official documentation. So that.
- I have 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 I came to the aid of the wonderful video courses at Stanford University CS106A (the video is on youtube). Courses are such a clockwork man that I want to forget about the difficulties of programming. Cap Tip: SUN == Stanford University Network.
- For learning Spring decided to read - vaannila.com . Simple and clear.
- For the final and irrevocable systematization of the language, I decided to pass the SCJP certificate exam in a couple of months.
Purpose : to know the language perfectly.
Motivation to learn : beautiful certificate.
The motivation for the qualitative study : you have to cram a lot of material, because you do not want to fail the exam, which costs $ 300.
Habrasan users:
- To prepare for SCJP and to systematize knowledge in SE, you can use the free and at the same time high-quality simulator from ExamLab .
- In addition to free development environments, NetBeans and Eclipse, habrap users recommend looking at a commercial IntelliJ IDEA . It is free for development in Java SE and you have to pay a denyu 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 ”, does not make you think“ where to poke here ”, suggests how to do better. Beginners learn significantly, at times, faster with it. ” ( # )
“Eclipse is usually advised to beginners because it is free. Everything is great in it as long as you are dealing with "clean" Java code, debugging it and everything that does not go beyond the launch of a single project with main (). As soon as you try to start an arbitrary application server, or you want to use the master for the XXX framework (especially to refactor code written using such a framework), hemorrhoids start, because the plugins are either written by curvature free developers, or are not compatible with the current build, or don't work with each other and so on and so forth. My experience says that than losing in productivity later, it’s better to retrain to IDEA right away. Reaching its limits is quite difficult, and glitches, if they are, are uncritical and are corrected quickly. ” ( # ) - Very good and well-written articles for beginning Java developers live at skipy.ru
- About the development of its CMS. Opinions are expressed that the amount of work on writing it is quite large, and it is very easy to make a mistake 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-based utilities, each of which will use a particular technology and perform an uncomplicated task.
- Regarding employment and knowledge of frameworks. More experienced comrades say that you should not go into web frameworks for Java. It is worth knowing in general terms what JSF, Struts, Spring, Hibernate are and for what purposes they are used. The emphasis in the preparation should be made on a detailed study of servlet containers ( Tomcat, Jetty ) and web services .
- With regards to knowledge of assistive technologies and tools.
“A project on Java is, more often than not, one person and even sometimes not one team. I always pay attention to whether “infrastructure” tools are mentioned in the summary - especially Maven (or, worse, Ant), if a friend knows how to write tests, whether he understands how to do load testing and how to draw the right conclusions from it, is he familiar with project management tools, for example, the JIRA bugtracker, whether SVN knows (come across and unaware), whether it can use Linux (at least restart Tomket and see if the disk space has run out). It is very good to devote some time to learning java reflection (because this is one of the keys to understanding how jvm works). In my opinion, the subtleties of proficiency in the language are completely unimportant if the final product is not able to be assembled from the console or you cannot ensure the work of the environment in which it will be executed. Using the right tools is half the success, the other half is experience. The nuances concerning programming (non-critical for operability, 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 for me and for the rest of these newbies like me.