Bookshelf: Java
Based on “JAVA → Java in Russian. Part one: Books » habrahabr.ru/blogs/java/66568
Good afternoon, dear Khabrovites!
A previous review of Java books by a user of Scala talked about “practical” books that entered the market in the last three years. I want to talk about these and other books from a slightly different angle: try to highlight the value of information from books.
I am not a fan of reading from the monitor, and prefer to buy books in paper form. To make an informed choice, you should be aware that the book carries some fundamental knowledge, but in no way a collection of “last pieces”. Also in this article I want to mention other famous works that are not directly related to Java. Let's see what is the best choice for language learning?
So Java. Wonderful, in my opinion, a programming language. Easy to learn, with great features and many other useful things. And it’s worth starting the study with a famous book
C. Horstmann - Java2: The Basics
A very good book showing the main features of the language and the platform itself. Describes the core API. In my opinion, it is required for purchase, and you should not even look at G. Schildt’s thick guide.“Having learned a language”, one must be able to apply it correctly. This will help us
G. Buch with his book “Object-Oriented Analysis and Design with Examples of Applications”
This book will be useful for both beginners and advanced programmers. Its main meaning is to teach to think “objectively”.> note: the book is not directly related to Java, so I do not single out it separately.
The very understanding of an object-oriented approach provides an excellent basis for understanding design patterns. And this will help us.
“Application of Java patterns” - S. Stelling, O. Massen, 2001
“Why patterns, do we code perfectly without them?” Is a fairly common question of people “programming” in any of the OOP languages. I want to clarify this situation a bit: modern programming is no longer a craft, but rather a factory, and not only the result is important, but the speed of development, extensibility, and more. All this is not achievable without proper design. Secondly, reading such literature will give an understanding of the Java organization itself, since almost everything in this language is built on patterns.
Now you can take on larger projects than our first, to gain new knowledge. And the second volume of the book will help us
C. Horstmann - Java2: The Subtleties of Programming
A wonderful book showing the unobvious "tricks" of the obvious process. Without experience - do not pop into the jungle.Can't help but mention my favorite book from
Steve McConnell - Perfect Code
Since you got involved in programming, please read it from cover to cover every year or two .So, we already understood what Java is, and desktop applications no longer inspire us as before, so we decided to write server applications.
We pass to J2EE. Immediately, I note that for me the J2EE specification is not only servlets, jsp, jsf and a couple of frameworks. For a deeper knowledge, completely different literature is required, which I did not find among the Russian speakers (I can only recommend the books in the original, such as “EJB 3 in Action” and “EJB Design Patterns: Advanced Patterns, Processes, and Idioms”).
As mentioned in the Scala habro-user article, there are very few books on J2EE, and only three can be said:
Budi Kurnyanavan - “Programming Java-based web applications”
Great book for a beginner. It describes the basics of creating j2EE applications based on servlets and JSPs pretty well. Masters will say that this is no longer relevant, and even nothing is said about EJB. But this book is intended for people who have just started getting acquainted with J2EE and the poor performance of server applications. Provides basic development skills for the Internet. So this publication fulfills its mission one hundred percent. Studying frameworks and other technologies is another story. Separately, it is worth mentioning the disgusting quality of the press: the drawings are unreadable.
C. Horstmann - “JavaServer faces”
A great book on the JSF framework from the category of must_have. Shows all the advantages of developing on JSF in terms of convenience and speed of development, the principle of building an application on "beans", and many other advantages of this technology.
“Samples of J2EE. Best Design Solutions and Strategies
Deepak Alur, John Krupi, and Dan Mulks have written an excellent book on patterns for J2EE. A must-read for anyone who is seriously interested in J2EE-based web programming.
Why did I lose sight of the "recipe book"? Yes, it is useful, but this is not the book you should buy in hard copy.
J2ME
Things are very bad here. All that I read was reduced to a banal tutorial "write a game while you read." Extremely stupid literature.
Conclusion:
Everyone wants to be on the crest of technology. That's just these technologies, unfortunately, are born in the west. Authors write books, translate them ... Precious time is wasted, and by the time the book is released, a good half of them are no longer so relevant. But, nevertheless, reading technical literature (including in the original) is very useful in terms of creating a foundation in your head on which it will be much easier to build an understanding of modern technologies than without them. After all, the work of a programmer is not just typing code, it is hard work requiring a creative approach.
What else can I add? To enhance the effect - we read the originals, documentation and forums. For beginners - first of all - books.
PS
There are reasoning books, such as "Flexible Java Application Development Using Spring, Hibernate, and Eclipse." In fact, they have neither spring nor hibernate. Just a discussion on how to program. I will not give a description of such publications; let everyone choose for himself what to read before bedtime.
UPD: Description of the book “Enterprise Application Architecture” by M. Fowler by sse
My opinion about the book.
The first thing that distinguishes the book is the author's style of presentation. Everything is very clear, and resembles a synopsis made by a joyful student - the main points are recorded, moments are highlighted, there are necessary illustrations. The book covers a wide list of issues: dividing the application into layers, organizing business logic, possible scenarios for working with a database, organizing UIs in a web application (the book does not cover UIs for desktop applications, but the author subsequently added this information to his website). Importantly, there are examples in Java that there is lingua franca for the modern developer.
Whenever the thought “but wrap this table in class, and then inherit it - hurray, I came up with a new way” begins to turn around, it’s worth taking Fowler’s book and reading - it’s probably documented, stated, an improved method is described and described pitfalls and ways to get around them are given.
The book is divided into two parts, and this is very similar to the structure of the book “Design Patterns” by GoF. The first part contains general provisions on the construction of the system, as well as examples of the application of knowledge from this book in real applications. The second part is a directory of patterns grouped by application layers, in which it is typical to meet each of them.
In conclusion, a number of elementary patterns are presented as the most common and universal from the field of data processing and storage, building your business objects, and tips on the interface part.
The book is not cheap, but the information contained in it pays for itself. It is available in electronic version on the Fowler martinfowler.com website: you can “select” (s) to find out if you need it or not. I immediately realized what I needed :)
UPD2: Description from a user of culvert editions in English
List of the best, in my opinion, ever written books about Java. Books are arranged in order of importance (the most fundamental are listed first).
0. J ava Language Specification 3rd Edition by James Gosling et althis is the most important book, book number zero on this list, also known as JLS. The third edition describes the 5th version of the language. I believe that every Java programmer should read JLS at least once. You need to know all the possibilities provided by the language in order to use them yourself and in order to understand the code written by others. JLS is an analogue of JavaDoc or other documentation for the libraries you use. However, unlike library classes, for which documentation is usually available from your programming environment, the language does not provide contextual documentation in programming environments, so JLS should be read practically “from cover to cover” at least at the table of contents and the general content of each item. JLS is required literature for preparing for the Sun Certified Java Programmer (SCJP) exam.
1. Effective Java 2nd Edition by Joshua Bloch talks about how to use the Java language to write programs that are good and understandable to others. This is a collection of practical tips and patterns that should be in the repertoire of every Java programmer. In the second edition of his best-selling book, Bloch talks about the effective use of all the features of the 5th version of Java. Even a programmer with many years of experience will discover something new in it and will surely enjoy the systematization of all basic knowledge about Java programming.
2. Java Concurrency in Practice by Brian Goetz et al(Must read if you want to write good multi-threaded code) is necessary for everyone who writes multi-threaded Java applications. It does not need to be read if you are writing simple applications, but for business logic use J2EE or other application frameworks that isolate the programmer from multithreading. However, as soon as you need to optimize the performance or reaction speed of your application, in the modern world you will not get away from multithreading. In this case, Goetz’s book will be your best assistant.
3. Java Puzzlers: Traps, Pitfalls, and Corner Cases by Joshua Bloch, Neal GafterThis is an interesting book that consists of intellectual puzzles exclusively in the Java language. It will reveal to you all the boundary cases of the Java language, teach you how not to program so that your code is understandable. The book is not required to be read, but is highly recommended for preparing for SCJP and for your own pleasure.