What do you think?


Thinking in Java
Thinking in Java is a printed version of Bruce Eckel's online materials that provides a useful perspective on mastering Java for those with previous programming experience. The author's take on the essence of Java as a new programming language and the thorough introduction to Java's features make this a worthwhile tutorial.
Thinking in Java begins a little esoterically, with the author's reflections on why Java is new and better. (This book's choice of font for chapter headings is remarkably hard on the eyes.) The author outlines his thoughts on why Java will make you a better programmer, without all the complexity. The book is better when he presents actual language features. There's a tutorial to basic Java types, keywords, and operators. The guide includes extensive source code that is sometimes daunting (as with the author's sample code for all the Java operators in one listing.) As such, this text will be most useful for the experienced developer.
The text then moves on to class design issues, when to use inheritance and composition, and related topics of information hiding and polymorphism. (The treatment of inner classes and scoping will likely seem a bit overdone for most readers.) The chapter on Java collection classes for both Java Developer's Kit (JDK) 1.1 and the new classes, such as sets, lists, and maps, are much better. There's material in this chapter that you are unlikely to find anywhere else.
Chapters on exception handling and programming with type information are also worthwhile, as are the chapters on the new Swing interface classes and network programming. Although it adopts somewhat of a mixed-bag approach, Thinking in Java contains some excellent material for the object-oriented developer who wants to see what all the fuss is about with Java.
1401 pages, Paperback
First published February 19, 1998
About the author
Bruce Eckel
36 books61 followersBruce 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.
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.
Ratings & Reviews
Friends & Following
Create a free account to discover what your friends think of this book!
Community Reviews
Displaying 1 - 30 of 83 reviews
March 15, 2015
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.
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.
Read
December 27, 2019The book is full of valuable insights and good, elaborate explanations. Well worth the read.
March 7, 2018
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.
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.
February 9, 2009
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...
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...
Read
August 14, 2018I think it is a very good book improving the java learner to further study java.
June 16, 2023
Філософія 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, та є дещо схоже на задачі в кінці параграфів.
Треба відмітити, що російська версія є стисненою версією оригіналу, в якій є понад 1000 сторінок. Ця версія дає достатні знання, коли англійська версія зупиняється на надто примітивних речах, як на главі String, або навпаки йде занадто глибоко в оповіданні, як у главі Containers in Depth. Однак, в оригіналі є окремі згадування цікавих речей, наприклад застосування патерну Visitor, та є дещо схоже на задачі в кінці параграфів.
November 17, 2011
This is a good book. I would recommend it as a first java book you should read
July 30, 2020
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.
Hope this helps.
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.
Hope this helps.
April 14, 2020
Outstanding.
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.
A must read.
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.
A must read.
February 2, 2018
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.
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.
June 6, 2017
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.
June 3, 2020
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.
August 4, 2023
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.
July 3, 2020
Прочитал эту книгу, имея уже некоторый опыт коммерческой разработки на Java. Многое оказалось знакомым, однако всё-таки были моменты, ставшие открытием. Советую тем программистам, которые уже пишут на Джаве, но чувствуют, что в чём-то их знания недостаточно полны и систематизированы.
November 11, 2020
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.
January 11, 2021
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.
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.
October 15, 2024
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.
May 17, 2017
A bit outdated, code listing are hard to follow due to a bad text formatting.
March 20, 2019
Хорошая книга для начала изучения основ Java
December 28, 2019
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.
Not sure if it is still up to date (I've read while on the universtity) but the basic concepts and technics are immortal.
November 10, 2020
Holy Bible for Java Programmer
February 4, 2021
One of the best books if you want to learn the concepts in Java. It doesn't matter that the book is old. If you want to know how java works, read it
February 8, 2024
Хороша книга для вивчення мови java. Але раджу її читати в оригіналі, бо російський переклад обрізав частину книги. Скоротив. Не знаю, як то так, але все ж, англійською краще.
October 9, 2019
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.
February 27, 2017
Good book. Many moments described in detail. But not very good translation into Russian.
November 3, 2014
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.
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.
November 8, 2015
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.
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.
November 16, 2016
Книжка очень объемная. Помимо того что написано в оглавлении, автор делает два шага влево и спиралью исследует все вокруг. Эффективнее было бы разделить ее на 3 книги:
- то что указано в содержании;
- методики программирования;
- прочее не указанное в содержании, но содержащееся в книге.
Еще из минусов - встречается плохо читаемый код, не очень хороший пример для начинающих программистов.
Плюс здесь в основном в обхвате тем. Прочитав эту книгу будешь знать шаблоны, потоки, ввод/вывод... и много других страшных слов.
- то что указано в содержании;
- методики программирования;
- прочее не указанное в содержании, но содержащееся в книге.
Еще из минусов - встречается плохо читаемый код, не очень хороший пример для начинающих программистов.
Плюс здесь в основном в обхвате тем. Прочитав эту книгу будешь знать шаблоны, потоки, ввод/вывод... и много других страшных слов.
October 15, 2013
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.
February 5, 2017
The first book which inspires me a lot, convert me to the Java Religion (just kidding). It tells you from the fundamental of programming concepts, represented in Java, to a interesting sample projects that spans through multiple chapters.
Displaying 1 - 30 of 83 reviews



















