The legendary author Bruce Eckel brings Java to life with this extraordinarily insightful, opinionated and downright funny introduction. Thinking in Java introduces all of the language's fundamentals, one step at a time, using to-the-point code examples. More than virtually any other book, Thinking in Java helps you understand not just what to do -- but why. Eckel introduces all the basics of objects as Java uses them; then walks carefully through the fundamental concepts underlying all Java programming -- including program flow, initialization and cleanup, hiding implementations, reusing classes and polymorphism. Using extensive, to-the-point examples, he introduces error handling, exceptions, Java I/O, run-time type identification, and passing and returning objects. He covers the Java AWT, multithreading, network programming with Java -- even design patterns. The best way to understand the real value of this book is to hear what readers of the online version have been saying about it: "much better than any other Java book I've seen, by an order of magnitude..." "mature, consistent, intellectually honest, well-written and precise..." "a thoughtful, penetrating analytical tutorial which doesn't kowtow to the manufacturers..." "Thank you again for your awesome book. I was really floundering, but your book has brought me up to speed as quickly as I could read it!"For both beginner and experienced C and C++ programmers who want to learn Java.
Bruce Eckel is a computer programmer, author, and consultant. Eckel's best known works are Thinking in Java and the two-volume series Thinking in C++, aimed at programmers wanting to learn the Java or C++ programming languages, respectively, particularly those with little experience of object-oriented programming. Eckel was a founding member of the ANSI/ISO C++ standard committee.
Bruce's approach to teaching the Java fundamentals is refreshingly different from most Learn Java books. I have been working with Java for three years, starting with college courses and the very basic Teach Yourself Java books. Most books simply go into syntax and fundamentals from a 'how-to' approach. 'Thinking in Java' is more concerned with explaining the Java language's design and behavior, and how the current topic fits in with Object Oriented Programming. I found myself having constant, "OH!" moments where something I'd been doing out of learned habit suddenly made sense from a broader approach.
Pros: Incredibly thorough, if you work your way through it you really develop a better understanding for Java and OOP, filled with exercises and recommended reading.
Cons: Definitely not a pure beginner book (but he addresses this in the introduction.) Most examples are written abstractly (i.e. not framed in real world problems/solutions) making the concept a little more difficult to wrap your head around.
Despite being pretty dense at times, working your way through the topics and exercises laid out in the book is a sure way to cement your foundation in Java.
This book is actually really good for a (really curious) beginner who has never seen a single line of code before. It is absolutely not a cookbook.
In school, they often present "intro to programming" classes as "how to memorize sections of funny symbols". You are basically glued to whatever programming language they use to introduce the CONCEPT of (object-oriented) programming or even computer science. This does not prepare you for problem solving in any way.
In this book, the intro chapter alone helps clear up months of previous confusion because it provides context of what is happening in the computer and more. It actually bothered to discuss the basics of the "lower levels" of your computer/ internet etc and how those interact with Java. It then actually bothers to constantly reference how all parts of your growing code are working with each other and your data. It prepares you to troubleshoot things yourself, instead of Googling some random guy's school project to copy and paste from.
Basically, this book should be renamed "Thinking in code" and not so much JAVA, even though it is 100% JAVA. Oh yeah, and the publisher should make the word "Thinking" in size 90000 font.
This book suffers from the same problem that many computer science books have. It seems that Eckel believes that learning a programming language should be completed on an exponential curve.
0 - basic... "This is a a variable" type stuff. 10 - this is how you make a function. 100 - you need to develop classes in this manner 1000 - when you're calling from the stack...
I know that one should have some computer science background when reading this book, however it seems to me that one should either start off at around 100, with a spot in the intro for 0 and 10, or just go a little slower...
Філософія Java (Thinking in Java в оригіналі) є гарною книгою для початківців як у програмуванні на Java (Junior), так і для більш досвідчених програмістів (Middle), які намагаються досконало вивчити об'єктноорієнтоване програмування (ООП), пов'язані з ним терміни (композицію, агрегацію, делегацію) та патерни проєктування. У підручнику, окрім розгляду плюсів та мінусів ОО мови з усіх боків, різних написаних автором ідіом та корисних практичних рішень, ви знайдете багато застосувань та згадувань наступних патернів: Singleton, Factory Method, Adapter, Decorator, Facade, Proxy, Command, State, Strategy, Template Method. Рекомендую мати при собі Design Patterns від "Gang of 4" або Head First Design Patterns заради теоретичних основ, хоча б заради зручних графіків патернів.
Треба відмітити, що російська версія є стисненою версією оригіналу, в якій є понад 1000 сторінок. Ця версія дає достатні знання, коли англійська версія зупиняється на надто примітивних речах, як на главі String, або навпаки йде занадто глибоко в оповіданні, як у главі Containers in Depth. Однак, в оригіналі є окремі згадування цікавих речей, наприклад застосування патерну Visitor, та є дещо схоже на задачі в кінці параграфів.
I am half way through the book, so this is my preliminary judgement, it might change once I comlete the whole thing.
Pros: - It goes into detail of what a particular concept is about, and explains the "why" behind different constructs. - It is a well-established book, re-written several times, so the material is polished. - Doesn't try to cover everything there is in Java, and focuses only on material which matters to programmers.
Cons: - Super boring exercises. I started off wanting to complete the whole set, but after getting through the first several chapters just got frustrated with the whole notion that you have got to use chapter examples to complete a problem. And examples are rather artificial in my point of view. I would perhaps provide exercises, but only a few simple ones for each chapter to solidify understanding, since the book is more a reference than a textbook anyway. - Example code is not ideal for reading, especially if you are used to IDE automatic formatting. Missing whitespaces couples with the fact that the book is black and white, makes it harder to read than necessary. - Explanations are hit and miss. Some of them are great, some are very hard to go through. For me Inner Classes and Interfaces section was particularly challenging.
My advice for those who are thinking of reading this material: - If you are completely new, start with another book. Author targeted mostly those with some programming experience. So find some introductory course, which gets through main concepts. Otherwise you will end up googling all the time instead of reading. - Read examples from IDE. All the code from this book is available at github for free. Copy and paste particularly long samples into IntelliJ or Eclipse, that would make your life much easiear. - Forget about solving problems. Pick 2 easy ones for each chapter to get your head around a concept, and move on to the next thing. - The book will not make you proficient in Java, but it will make you understand how the language works. That's why I wrote the point above. The focus here is on understanding.
This book only covers till Java 5. So, many people can complain that it's a little dated. However, it teaches the language foundation so well, that post Java 5 features would be a cakewalk.
The book is thought out really well and should be read sequentially. It covers each concept in detail and provides ample examples and exercises to clear doubts. The coverage of collection, generics and concurrency is best in class.
If you are a Java programmer and want to learn the language in depth then go for this. The author has published a new book 'On Java 8', covering till Java 8. Can go for it to learn modern features also.
Really great book to refresh knowledge about java and concurrency. I was thinking that this book will just tell you about language specification e.g you have to write variable as so etc. But this book really helps you "Think" in java. A lot of examples helps to understand the problem better. Although it can be somehow overwhelming for novices, as a book saying in the preface. This book is more suitable for people who already know the language and ready to refresh/expand their knowledge of it.
Excellent read. Recommended for new comers, as well as experienced developers. This book gives an insight and perception into writing code, and working of the language no other programming reference manuals come close to. This book will help you develop your approach to design and object oriented programming.
An impressive exhaustive presentation of Java. In the end you'll be familiarize with all the aspects of this language(how it was at that time at least); even with topics that are more "obscure" to say, like type erasure, reflection. It was very useful for me when I was studying computer science. I'm very glad that I have stumbled upon this read(it was a long time ago).
The philosophy in the first 50 pages of focus on a syatematic philosophy which we might playfully call a post-Aristotelian Pythagoreanism. Done in classical dialogue format, details a substrate; forms do not exist separately from matter but exist in seed prior to manifestation; that individual consciousnesses are co-extensive with one another across the entire cosmos.
It was mostly ok and I learned a couple of new things too. It's nice that it has concepts that I was not familiar with. But I believe it can still be improved a little, by separating the Concurrency chapter in, maybe, another book, and also by adding more exercises with the concepts that are really used a lot in the real world.
Прочитал эту книгу, имея уже некоторый опыт коммерческой разработки на Java. Многое оказалось знакомым, однако всё-таки были моменты, ставшие открытием. Советую тем программистам, которые уже пишут на Джаве, но чувствуют, что в чём-то их знания недостаточно полны и систематизированы.
This would have been a better Java textbook than the ones I remember having for Java courses, but by this point the repetition of how much of an improvement Java 5 is makes the book show its age. If the book were three Java versions more recent I would most likely give it at least one more star.
Honestly I hoped that it would help me more than how much it did. This introduction to java is nice to read but hard to understand. The exercises are not easy for people who are just starting to learn this programming language.
I tried took a look at subsequent editions and I still prefer this one. The Java features are presented accompany by development concepts like good practices, unit testing in a natural and easy to understand way.
quite heavy and hard but essential for every Java Dev out there. Not sure if it is still up to date (I've read while on the universtity) but the basic concepts and technics are immortal.
Хороша книга для вивчення мови java. Але раджу її читати в оригіналі, бо російський переклад обрізав частину книги. Скоротив. Не знаю, як то так, але все ж, англійською краще.
This book taught me how to think in objects, how to think in programming concepts and how to think in Java. I wish it was updated, because Eckel's writing is just great.
This one is definitely not for a beginner. You better have some previous knowledge about Java. Knowing C/C++ would be a plus. At least elementary knowledge.
Pros: Has some good tricks explained. Sometimes it goes into great details. Also, it presents some examples that could be quite useful in everyday tasks. Anonymous classes were clearly explained. The same goes for Exceptions.
Cons: Explanations of patterns were inconvenient. Explanations of generics were also inconvenient - not clear enough. Many times, I found Bruce to be disorganized - e.g. explanations of I/O.
And another thing: Java has marched on. Book explains Java 1.6 and it shows (e.g. missing switch statement with Strings). At the time of this writing Java 1.8 is IN. This book should follow. In that case I might consider giving it an extra star. Just maybe :)
I'm not familiar with his Thinking in C++ book, but it might be better. I'm fluent in C.
Good intro to Java, although it's a bit outdated now (the fourth edition focuses on Java 5 while the latest standard is Java 8 from 2014), but it's good to have an idea of several aspects of the language. Coming from C++ I found it entertaining and clear, the auther often makes a parallel between both languages. I'll try to compensate by reading Java 8 in Action next.
I didn't go through the last chapter as I've heard that there's a new way of implementing a user interface, and also I'm not interested in that feature right now.
Книжка очень объемная. Помимо того что написано в оглавлении, автор делает два шага влево и спиралью исследует все вокруг. Эффективнее было бы разделить ее на 3 книги: - то что указано в содержании; - методики программирования; - прочее не указанное в содержании, но содержащееся в книге.
Еще из минусов - встречается плохо читаемый код, не очень хороший пример для начинающих программистов.
Плюс здесь в основном в обхвате тем. Прочитав эту книгу будешь знать шаблоны, потоки, ввод/вывод... и много других страшных слов.
In my mind, this book is a seminal work. It was the first real programming book I ever read, and although I've never done anything significant in Java, the author's explanation of the various object-oriented concepts has served me well over the years. My only sorrow is that the version I read was concerning the rather early Java 2 (1.2) and so many of the new OOP concepts (generics and dependency injection anyone?) I have had to learn fresh.