Head First Java
The Good
Of course, you can't learn Java without a good understanding of object-oriented languages. I made fairly heavy going with 'Learning Java' until I decided to dive in head first. Head First Java, that is -- a new book from O'Reilly that has a totally different attitude to teaching than I've seen before in computer books. It also looks like this might be the start of a series from O'Reilly, the website an introduction seem to assume that there will be more 'Head First' titles and I hope so. The style is humorous, full of graphics, cartoons, puzzles, quizzes and crosswords. It reminds me of the textbooks that used to try and teach me geometry and algebra in high school or my daughter's elementary books on Roman and Greek history I purchased for her at the British Museum. The style didn't work to teach me much algebra and geometry, but I wasn't anywhere near as motivated. This time, it worked. In a couple of weeks I worked through the book and finally have Java skills where I can branch off and start coding the projects I had in mind (though something more advanced will be required soon.)
In the introduction the authors examine learning and explain why they designed the book as they did. To quote from one section: "Some of the Head First learning principles. Make it visual. Put the words within or near the graphics. Use a conversational and personalized style. Get the learner to think more deeply. Get -- and keep -- the reader's attention. Touch their emotions." They argue that our brain is tuned to novelty, and that their style provides the novelty to keep your brain turned on. They also provide ten tips for good learning. That's one thing that seems to set this book apart from most other computer books, they say they think of their reader as a learner and indeed that's the way you are treated by the book. You can start to get a feel for their ideas by visiting headfirst.oreilly.com, a site devoted to the series. You can also grab a couple of example chapters from the books web page, which also has the usual marketing info, table of contents and errata.
The BadWhen compared to Learning Java the coverage is not as good. Head First really only covers the basics, up to and including creating a GUI with SWING and then touches a number of others; Learning Java goes on to explore, with a fair depth, network programming, web programming, servlets, applets, Java Beans, XML and other topics that are only touched on briefly in Head First. If the style of learning does not suit you then this will be an incredibly irritating and useless book, I'd give it a try first, though. If it isn't for you then the style of Learning Java might be better.
ConclusionWhen you get down to it, though, the only way to really decide on the worth of a tutorial is to decide how well it teaches. Head First Java excels at teaching. OK, I thought it was silly, I had a hard time making myself do the exercises, fill out the crosswords and solve the puzzles. Then I realized that I was thoroughly learning the topics as I went through the book. Learning Java was doing the same job, but the dry traditional method wasn't doing as well. Both books are well written, designed and constructed -- the style of Headfirst Java just made learning, well, easier.
It would seem to me that the 'Head First' approach is going to work wonderfully for the more 'beginner' topics, books for introducing you to a new style of programming, a new language or a radically different operating system or application. So if you're looking for a book to introduce you to Java then I can recommend Head First Java. Now if I could only find a book as good to introduce me to Common Lisp.
You can purchase Head First Java from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
The highlight of my reading would have to have been the erotic imagery left behind by some Barnes and Nobles passer-by (the previous reader of the book left some provacative, awe inspiring bra-busting imagery of his former girlfriend - a little note that accompanied the images detailed a narrative of how these images came to be).
I'm not sure if it's normal to get that excited when reading about an object oriented programming langauge, but I have to say, it was certainly the greatest computer science book that I have ever read in my 35 years.
i have a huge hard on with a cheese burger on top of it & liquid java spew out my ass right now!
When will people start understanding this !!!
I ATE your MOTHERS FACE WITH nothing to relieve me but the dog Is TE CAT WHEN IS EE NOTHING> resoibd WITH TEH code MOCKINGBIRD
In the introduction the authors examine learning and explain why they designed the book as they did. To quote from one section: "Some of the Head First learning principles. Make it visual. Put the words within or near the graphics.
"The habit of using pictorial aids, like any habit, is very difficult to get rid of. If, however, we take any responsibility for the effectiveness of our thinking habits, we should try to get rid of the habit as quickly as possibile, for it is a bad habit, confusing and misleading up to the point of being paralysing."
gathers TROLL SEX lovers from all over the UK and abroad for one common goal - having TROLL SEX!
Are you a TROLL?
Are you a SEX?
Are you a TROLLSEX?
If you answered "Yes" to any of the above questions, then TSAU (TROLLSEX ASSCOCIATION OF UK) might be exactly what you've been looking for!
Join TSAU (TROLL SEX ASSOCIATION OF UK) today, and enjoy all the benefits of being a full-time TSAU member.
TSAU (TROLL SEX ASSOCIATION OF UK) is the fastest-growing TROLL SEX community with THOUSANDS of members all over United States of Europe. You, too, can be a part of TSAU if you join today!
Why not? It's quick and easy - only 2 simple steps!
First, you have to obtain a copy of TROLL SEX FROM OUTER SPACE THE MOVIE and watch it.
Second, you need to join the official TSAU irc channel #TSAU on EFNet, and apply for membership.
Talk to one of the ops or any of the other members in the channel to sign up today!
If you are having trouble locating #TSAU, the official TROLL SEX ASSOCIATION OF UK irc channel, you might be on a wrong irc network. The correct network is EFNet, and you can connect to irc.secsup.org or irc.isprime.com as one of the EFNet servers.
If you have mod points and would like to support TSAU, please moderate this post up.
This post brought to you by a proud member of TSAU
to say, once again: Java still sux.
Its slow, has licensing issues with Sun, and requires the run time env. for people to operate Java programs. For the web it sucks, requiring extra client software. For standalone programs it sucks, it's impossible to code something lightly in Java--too bulky, slow, bloated.
meow
..."Mr Bunny's First Cup o' Java"
668: Neighbour of the Beast
It appears our reviewer has fallen under a common misconception.
Java != JavaScript
The two are not even related. Yes, you can use them together, but the only thing they have in common are the four letters "J-a-v-a". It's bad enough when normal people fall under this misconception. We don't need supposedly technically savvy people succumbing to the same thing.
JavaScript was developed by Netscape as a dynamic browser language, and "extended" by Microsoft. The W3C "standardized" it, and then both Netscape and Microsoft went about with their own proprietary versions.
Java is owned by Sun Microsystems and was originally an embedded systems language. Sun took the language, renamed it "Java", and added web functionality.
What is your Slash Rating?
The Java Cookbook is the way to go for beginners.
http://www.oreilly.com/catalog/javacook/
If you are reading this, you are most likely.
Now you know.
..."Mr Bunny's First Hit o' Crack"
Forget thrust, drag, lift and weight. Airplanes fly because of money.
See you at the next GNAA convention...
"Sure, I understood the concepts and I'd done a little but never in a language so strongly committed to OO as Java."
Objective-C is more commited.
Eiffel is more commited.
Smalltalk is more commited.
Try Ruby. I started serious programming with Java too, and I thought it was OO, but then I found how wrong I was. Now there are probably langauges even more OO than Ruby like maybe Smalltalk, but from what I hear Ruby is much easier to get started with than Smalltalk.
Java is really just a cleaned-up version of C++ with the glaringly obvious non-OO aspects removed, the preprocessor thrown out, and pointers hidden. As a compiled language it's not bad at all. As an implementation, it's, er... not much fun.
Just wanted to save a few newbies before they start with Java thinking it is the height of OO.
gathers GAY NIGGERS from all over America and abroad for one common goal - being GAY NIGGERS.
Are you GAY?
Are you a NIGGER?
Are you a GAY NIGGER?
If you answered "Yes" to any of the above questions, then GNAA (GAY NIGGER ASSOCIATION OF AMERICA) might be exactly what you've been looking for!
Join GNAA (GAY NIGGER ASSOCIATION OF AMERICA) today, and enjoy all the benefits of being a full-time GNAA member.
GNAA (GAY NIGGER ASSOCIATION OF AMERICA) is the fastest-growing GAY NIGGER community with THOUSANDS of members all over United States of America. You, too, can be a part of GNAA if you join today!
Why not? It's quick and easy - only 2 simple steps!
First, you have to obtain a copy of GAY NIGGERS FROM OUTER SPACE THE MOVIE and watch it.
Second, you need to join the official GNAA irc channel #GNAA on EFNet, and apply for membership.
Talk to one of the ops or any of the other members in the channel to sign up today!
If you are having trouble locating #GNAA, the official GAY NIGGER ASSOCIATION OF AMERICA irc channel, you might be on a wrong irc network. The correct network is EFNet, and you can connect to irc.secsup.org or irc.isprime.com as one of the EFNet servers.
If you have mod points and would like to support GNAA, please moderate this post up.
This post brought to you by a proud member of GNAA
________________________________________________
| ______________________________________._a,____ |
| _______a_._______a_______aj#0s_____aWY!400.___ |
| __ad#7!!*P____a.d#0a____#!-_#0i___.#!__W#0#___ |
| _j#'_.00#,___4#dP_"#,__j#,__0#Wi___*00P!_"#L,_ |
| _"#ga#9!01___"#01__40,_"4Lj#!_4#g_________"01_ |
| ________"#,___*@`__-N#____`___-!^_____________ |
| _________#1__________?________________________ |
| _________j1___________________________________ |
| ____a,___jk_ GAY_NIGGER_ASSOCIATION_OF_AMERICA_|
| ____!4yaa#l___________________________________ |
| ______-"!^____________________________________ |
` _______________________________________________'
There's a huge glut of programmers on the market with little or no experience using any other programming language other than Java. The dot com years produced millions of Java "programmers" that did not how to do much beyond blindly mimicing the Sun "Pet Store" J2EE example without understanding the fundamental concepts that underpin the technology. The stuff runs adequately and meets the minimum business requirements in many cases (albeit a bit slow). When coding becomes cookie-cutter simple - you can no longer justify the outrageously high salaries Java programmers make - so high paying employers are cut and replaced with much cheaper replacements. Great for businesses - a cheap and readily available labor supply. You've got to be wondering if Sun regrets ever inventing Java in the first place. Afterall, Java runs better on and much more cheaply on x86s than on Sparc. Sparc sales have fallen off a cliff as result. Sun has never been able to recoup its Java R&D cost.
Once the reader has absorbed the introductory material in the Head First book, he/she is ready and more able to delve deeper into the subject with a 'heavier' book -- in this case, Learning Java.
...and that's the way the cookie crumbles.
...a language so strongly committed to OO as Java...
.. hahahaahaha... okay I hahahahhahhahahaah... shit, sorry.. ahahahahahahahaha... what were you saying?
Hahahahahhhahahahaha... wait
mindview.net/Books
You'll be glad you did!
gathers TROLL SEX lovers from all over the UK and abroad for one common goal - having TROLL SEX!
Are you a TROLL?
Are you a SEX?
Are you a TROLLSEX?
If you answered "Yes" to any of the above questions, then TSAU (TROLLSEX ASSCOCIATION OF UK) might be exactly what you've been looking for!
Join TSAU (TROLL SEX ASSOCIATION OF UK) today, and enjoy all the benefits of being a full-time TSAU member.
TSAU (TROLL SEX ASSOCIATION OF UK) is the fastest-growing TROLL SEX community with THOUSANDS of members all over United States of Europe. You, too, can be a part of TSAU if you join today!
Why not? It's quick and easy - only 2 simple steps!
First, you have to obtain a copy of TROLL SEX FROM OUTER SPACE THE MOVIE and watch it.
Second, you need to join the official TSAU irc channel #TSAU on EFNet, and apply for membership.
Talk to one of the ops or any of the other members in the channel to sign up today!
If you are having trouble locating #TSAU, the official TROLL SEX ASSOCIATION OF UK irc channel, you might be on a wrong irc network. The correct network is EFNet, and you can connect to irc.secsup.org or irc.isprime.com as one of the EFNet servers.
If you have mod points and would like to support TSAU, please moderate this post up.
This post brought to you by a proud member of TSAU
best book on java imo, and its free to try out
http://mindview.net/Books/DownloadSites
I'm a rabbit startled by the headlights of life
Congrats on choosing Java, its a great language, and far better than javascript which is more like assembly than anything else. The only problem with it is speed: here in the lab we tried using it to control our partical physics experiments but it simply couldn't execute fast enough to deal with the particles before they disappeared (most leptons, Baryons and Hadrons will decay in a few femtoseconds). Further examination showed that C could do the job as it was significantly faster due to being more object oriented and using a just in time compiler.
All that glitters has a high refractive index.
gathers GAY NIGGERS from all over America and abroad for one common goal - being GAY NIGGERS.
Are you GAY?
Are you a NIGGER?
Are you a GAY NIGGER?
If you answered "Yes" to any of the above questions, then GNAA (GAY NIGGER ASSOCIATION OF AMERICA) might be exactly what you've been looking for!
Join GNAA (GAY NIGGER ASSOCIATION OF AMERICA) today, and enjoy all the benefits of being a full-time GNAA member.
GNAA (GAY NIGGER ASSOCIATION OF AMERICA) is the fastest-growing GAY NIGGER community with THOUSANDS of members all over United States of America. You, too, can be a part of GNAA if you join today!
Why not? It's quick and easy - only 2 simple steps!
First, you have to obtain a copy of GAY NIGGERS FROM OUTER SPACE THE MOVIE and watch it.
Second, you need to join the official GNAA irc channel #GNAA on EFNet, and apply for membership.
Talk to one of the ops or any of the other members in the channel to sign up today!
If you are having trouble locating #GNAA, the official GAY NIGGER ASSOCIATION OF AMERICA irc channel, you might be on a wrong irc network. The correct network is EFNet, and you can connect to irc.secsup.org or irc.isprime.com as one of the EFNet servers.
If you have mod points and would like to support GNAA, please moderate this post up.
This post brought to you by a proud member of GNAA
________________________________________________
| ______________________________________._a,____ |
| _______a_._______a_______aj#0s_____aWY!400.___ |
| __ad#7!!*P____a.d#0a____#!-_#0i___.#!__W#0#___ |
| _j#'_.00#,___4#dP_"#,__j#,__0#Wi___*00P!_"#L,_ |
| _"#ga#9!01___"#01__40,_"4Lj#!_4#g_________"01_ |
| ________"#,___*@`__-N#____`___-!^_____________ |
| _________#1__________?________________________ |
| _________j1___________________________________ |
| ____a,___jk_ GAY_NIGGER_ASSOCIATION_OF_AMERICA_|
| ____!4yaa#l___________________________________ |
| ______-"!^____________________________________ |
` _______________________________________________'
posting these silly trolls while kim jong il is preparing a war that will claim millions of lives
I found "The Object-Oriented Thought Process" to be a great jumping-off point in helping me familiarize myself with how to think in-terms of OOP.
The intro to OOP chapters that are in most introductory books are OK, but they just didn't do enough for me.
if you want to learn a particular Java aspect look at Sun Java Tutorials. (they are excellent a free).
If you want to leatn OO programming and Java I would suggest Think In Java (it's the best and it's free).
----
Ok, I hate to nitpick but Javascript has NOTHING to do with Java. They just have a similar name is all.
This is my sig. There are many like it but this one is mine.
there won't be much freedom left when seoul and tokyo are reduced to ash! it will be the end of democracy and you DARE to mod me down because i'm not talking about fucking java or whatever???
that is rather shortsighted first you came for me but tomorrow they might come for you!
imagine!
Has got to be the Core Java Series. Between the fundamentals and the advanced books, I haven't found anything as complete and as clear as this.
am i the only one getting a distinct "for dummies" vibe off of this book?
no comment on the book itself, it's just that "head-first" seems like it could very easily be the next "complete idiot's guide"...
well, it's nothing one behind the ear wouldn't cure
This is the first time I've tried to look at a story with 63 comments with my threshold set to 5, no comments showed up!
Somehow I knew though, when the article starts with I decided to learn Java because Javascript wasn't good enough., that there would be trouble!
Begun, the Javascript != Java flamewars have.
You are checking your backups, aren't you?
I read O'Reilly's Learning Java (1st Edition) and really liked the way the book is written. Its no-bs way of shwoing the concepts is useful for beginners who want to learn the structure of the language, and for experts, who use it as a reference for the advanced concepts. All in all, I'd recommend it thoroughly. -Neil
I saw some 6-year old kids talking the other day. Kid 1: Have you seen my website lately? Kid 2: no. Kid 1: It has a new layout now. Kid 2: cool!
It's only a matter of time before these kids will want to learn JAVA, and a basic, picture-laden book is sure to attract their attention quicker than a tome that they probably can't even lift.
stuff |
...a language so strongly committed to OO as Java...
Mmmmmm.
Whence? Hence. Whither? Thither.
Is there a glut of Java programmers or are you a slut of a Java programmer? There's not much difference. Pet Store make boom boom go. I are a compuder programer.
My verdict is that the tutorial is not a bad way to learn Java programming at all. The trick is to read every line (dont skip anything), and try every example in there, and in addition try your own variations. Worked for me, but needless to add ... your mileage may vary
All you touch and all you see is all your life will ever be
About them Java Coders,
codin' here and there.
Just like Gosling's Keynote said,
Java's Everywhere!
Them platform neutral Java Coders,
runnin' hotspot mode.
Keep them classes nice and neat,
'til it turns bytecode.
Multi-threaded Runnables,
and Serialization,
keeps those members all in line,
avoiding race condition.
How to be a Java Coder,
here's thee easy way:
Go to sun.com's web site
and get the SDK.
A programmer is a machine for converting coffee into code.
This is far, far, too far away from being the best book on Java.
:
I'll even argue that this is not a good book at all. As always Mr. Eckel is going on and on with a 2-3 pages of reflections and a small piece of programming practices(everyone who've tried to read the C++ thinking, know for what I'me talking about), so my point is
1) The book will be confusing for a beginner programmer.
2) It'll be useless for the most part to a person with some general programming culture.
Anyway, the best book to start with java is "On to Java", I don't even remember the authors but it's everything: Short, explicit and well structured. A problem may be that it should be a bit outdated.......
Of course, all one really need to start programming in Java is here
1. No sig. 2. ???? 3. Profit!!!
If one hasnt written production OOP code by 2003, even 1995, then one is technologically backward and not competant to comment about it.
The authors of Head First (which I've never looked at) also have an excellent book for preparing for the 1.4 Programmer (and Developer but I can't speak to that part) Exam. It just helped me pass the test.
If you don't know Java, get head.
Ladies, for the geek in your life, give them head.
Too... many... bad puns!
Transforming the buzzwords of "encapsulation", "reusability", "modularity" into workable and efficient solutions requires way more work than strictly learning the language.
Also, a common pitfall is to believe that you can do whatever because some garbage collector is taking care of memory management.
Before even reading whatever about java, I'd strongly recommend
- of course, Design Patterns, by Erich Gamma et al;
- Principles of Object-Oriented Software Design, by Anton Eliëns (online version here).
like python
"I'd spent some time using JavaScript without really getting my hands too dirty but I'd pushed it way to far and realized I needed a bigger hammer"JavaScript is a great deal more capable than most people think...
<shameless_plug>Just take a look at my Manic Miner conversion, a 20 level game entirely in JavaScript - it works in most browsers.</shameless_plug> Then take a look over at JavaScript Games.
After about three months of relentless Willy action I reckon I'm now as good as when I was 10.
look at the time stamps moderators.
!"JavaScript".equals("Java")
668: Neighbour of the Beast
you will be the cause of human extinction within 50 years
atleast have the guts to show yourself
this was posted before the 'informative' post below, how the fuck is it redundant?
Stupid moderators.
MOD THIS FUCKER DOWN!
I think of this many times and I laugh...
I moved into Silicon Valley in 2001, the time when the dot-coms were beginning to go bust...
I started working on Java in my own spare time to get to know the language better (I had worked on C++ for several years in the past and used to suffer the same "hmph, Java? So what's new in there that isnt in C++? bah, I dont need to learn another OO language.." syndrome) - again this was in 2001 - the year the dot coms were beginning to go bust...
I landed a job in Silicon Valley during the time most programmers were making their exit out of Silicon Valley, in 2001, during the time the dot-coms were beginning to go bust...
And surprisingly enough (not?) the job I got involved programming in Java for a good two years, and still continuing, and the funny part is (drum roll....) the company Im working for has nothing to do with dot com...
Java only = Dot com? nah, I dont think so.
The majority of developers do NOT fully understand OO principles. There is a difference between learning the syntax and the basic features and understanding how to leverage them. Most OO developers can write and use simple classes, use inheritance and basic polymorphism. This is generally all that is taught in courses and language books. This is also sufficient to get most things done. :)
However, most people this level of knowledge do not understand just how much more can be done. A good example of more powerful OO programming is in the Gang of Four book. The conceptual leap from procedural to basic OO programming is but the first step.
I guess what I'm getting at is that once you're at this point where you're using basic OO techniques, then there's still a lot more you can learn (even if you know each and every language feature and its syntax). Just be aware of that and look into it someday.
Madness takes its toll. Exact change please.
I'll gladly spend money on a "Head First..." or "... for Novices" series. But it'll be a cold day in Hell before I buy anything designated for Dummies or Idiots.
Kudos to O'Reilly for titling their primers with some dignity.
Check out some university CS websites for the basics of a new language. You should usually be able to find some free lecture notes written for a course dealing with your language of interest. As they are written for students, they're "dumbed down" enough to make learning the language simple, but at the same time often contain conceptual backgrounds as well. In a series of Java notes, like these at Stanford, for example, you will find all sorts of information not only about Java itself, but also object-oriented programming in general. Another advantage is that it's easier to find information about less-commonly-used languages. For example, the University of Illinois produces a wonderful resource book for x86 assembly (NASM).
Once you understand the basics behind the language, then go ahead and buy a book for the kinds of applications you need.
I tested this book by handing it to my other half; she figured out at least 3 serious errors and put in errata for them; you'll find the errata at O'Reilly.
It'll be a much better book, and recommedable for beginners in the second printing/edition when these are fixed.
"You know you want me baby!" - Crow T Robot
After that read Java Development With Ant by Hatcher and Loughran for good info about how to set up real java development environments. Ant is a tool that fits a similar ecological niche as make, but has tons of extra features particularly useful to Java developers.
Oh, and don't bother with an ide. Real men use vim.
The licensing for Java CLEARLY states that it cannot be used to control nuclear reactors, pacemakers, suborbital rockets, and particle physics experiments.
2 of these are real licensing requirements by the way.
You've been trolled!
"I've been writing software for nigh on twenty years without it - why make life hard? "
I think there is a distinction here that needs to be brought up that I feel many programmers are unaware of. This is aimed for programmers who decided to go out there and learn Java who have never learned an OO language.
I think the goal of programmers should be to learn to code well. Having said that, those who then go on to "learn how to program java" from an instructional book are a bit mistaken in my humble opinion. There is a big distinction between language, which is a tool, and theory. The above analogy would be best explained by saying that you would want to learn how to write good stories and then picking up a bit on the english language. Good stories can be written in any language, pick one. It is the same for programming. Learning a language won't teach you to program well, it will just teach you to program in a different language.
Why learn OO? Let me take the analogy further: scripting languages really only allow you to write short stories. They do things similar to OO programming, but the scope of their use is quite limited and when you attempt to take them out of that realm they become difficult to use and unwieldy. An OO language allows you to write novels. They allow you to program larger programs, with a better underlying structure and more complexity.
"Injustice anywhere is a threat to justice everywhere." - Martin Luther King, Jr.
So nice and formatted, with little "bad" things about the book that end up being good things.
WARNING: THIS IS A PAID ADVERTISEMENT MASQUERADING AS A REVIEW!!!!
Hi, I'm Pat Niemeyer, the author of Learning Java. As I sat down this morning to begin work on the fifth edition of the book for Java 1.5 I was
;);)
pleasantly surprised to see this item on Slashdot (my first stop of the day). So I thought I'd chime in with a little bit about what it's been like working on this book over the years and ask for you help in making it better.
The short story is that trying to authoritatively cover a topic as broad as the Java language and libraries and to do so without simply producing a giant shelf-filling reference tome or dry as toast text book is a very difficult challenge. I think there are parts of the book that have met this challenge and parts that can be better in the future.
Now, I consider myself to be a relatively funny and creative person (also sexy, and other adjectives as well) and I think if someone had asked me back in 1995 what my first book would have been like I might have imagined something a bit lighter and breezier than an 800 page book about a programming language. But I think that the Slashdot audience in particular will appreciate that despite its size and some obligatory coverage, this is a book written by someone who has a passion for software and architecture and that I have tried to pour my creativity and time into crafting elegant, insightful, and *minimalist* examples. I wrote this book for people who think and learn the way that I do and that may not appeal to everyone.
I think the strongest parts of the book are in the most exciting and difficult areas of Java - topics such as advanced networking, multi-threaded
programming, and XML. IMHO Learning Java's coverage of these topics is deeper than some single topic books in their entirety.
The Java language is a moving target and one that gets more moving parts every day. The greatest challenge in writing about it now is not what to cover, but what to leave out. I have spent many many hours on the phone with my editor (Mike Loukides) over the years debating about what we need to include and what we need to cut. In recent editions which have included a CD in the jacket (yah, I know... book CDs are normally useless) I have started moving the old, less relevant material (such as some of the original AWT API stuff) to the CD.
I have also experimented with the introductory tutorial chapter - trying to give a broad overview of the whole language in one chapter before diving into details. Some people may see that and be turned off. I hope they'll dig a little deeper.
I am very interested in what Slashdot readers have to say about how to make the book better. Your comments would be very well timed right now as I am updating the book for Java 1.5 as we speak.
I hope you'll check out my book if you need to learn (or learn more about) Java. If you have already mastered Java then I hope you'll buy a copy of my book and give it to a homeless person
Thanks,
Pat Niemeyer
Author of Learning Java, O'Reilly & Associates and the BeanShell Java scripting language (www.beanshell.org).
javascript also supports OOP and stuff of that nature, just most people never know about it. It's quite a robust little language.
Java: Write Once, Debug Anywhere
Dude, he was making a comparision. Like when you compare something to something else. As in "I've never seen a mountain as big as pike's peak" does not mean that pike's peak is the highest mountain. It just means that of all of the mountains he has seen, pikes peak is the tallest. He is correct because he hasn't used Objective c, eiffel, or smalltalk. ...
And they all said
You insensitive Clod.
Well.. maybe. Or Maybe not. But Definitely not sort of.
It's really an enjoyable read, and after I complete this I can't wait to try some of the other books coming out in the head first series.
The next one is head first ejb, in august, according to headfirstjava.com
Another thing is that all the examples featured OS X as the operating language, but it's completely independent. I was considering buying the other O'Reilly book Java and Mac OS X, but I'm really glad I got this one instead.
Check out some of the amazon customer reviews for a generally glowing recommendation.
hooray! it's a sex wiki
want to give head? learn java first!
give head the slow way. cuz givin head in java.speed=utterlyslow is the best way
"encapsulation", "reusability", "modularity" all features of good coding, whether the coding is procedural or object-oriented.
Probably even more important for good coding is EXTENSIVE comments and self-documenting variable names. If I never see the variables 'x', 'y', 'i', etc. again in my life I'd be a happy man. For god's sake tell me what you're counting and why.
Time and again I've seen how writing easy to maintain code is SO much more important than writing 'optimized' code. You can't pre-optimize for speed to any great extent, you first need numbers showing where the bottlenecks are. You CAN pre-optimize for modularity/extensibility which is much more important IMHO.
Don't forget that Sun has a excellent set of Java tutorials online for free:
Tutorials & Short Courses
These are essentially the contents of the Sun press line of books.
It's 10 PM. Do you know if you're un-American?
Neither of the books mentioned are as good a learning book as Thinking in Java by Bruce Eckle. Which has the benifit of being free as in beer: http://www.mindview.net/Books/TIJ/.
Alright, so I'm not trying to, uh, bait flame, but provided that Java works best for client-server applications, or just server-side apps, what are the major problems with Java as a platform? Or is it that Sun is not being open enough with the specifications?
You must be joking. Please take a look at Smalltalk or Ruby before talking about OO.
There are many well-reasoned articles defending scripting as superior to OO, this is just one I could find in a few seconds on google.
The author has a link to many more:
http://www.softpanorama.org/SE/anti_oo.shtml
And of course this has been discussed on slashdot before too:
http://slashdot.org/articles/01/01/09/1420258.sht
Clear, readable structure and flow is vital to the maintainability of a body of code, and in my opinion is better expressed with procedural script calling powerful compiled code than with the morass OO too often becomes. You don't write the NOVEL in script, you write the table of contents and the general narrative - the individual chapters and footnotes you write in C, use a C++ dll, use a Java object, whatever the most appropriate technology is. Any other procedural/scripting programmers out there that agree? Some quotes for all the OOP CS-propagandized out there:
I received this book just last week and am slowly working my way through it in-between work and other projects. I and am very pleased with it. The reviewer is correct in that this book makes learning much, much easier. It is, however, a little short on in-depth material, but I feel it can be forgiven for that in light of how well it teaches the basics.
How well does it teach? Through 4 years of a comp-sci degree that taught things using C++, I never understood Object-Oriented design as well as I do after just the first 7 chapters of this book. Hell, I'd recommend the entire book just for the chapter on polymorhism alone.
I won't go into detail since I'm short on time, but basically, if you're new to Java but know how to program in some procedural language already, this book might be what helps you go from writing programs the same way in Java to writing in Java, the way it was designed to be used. If you already know Java, though, you'll probably be bored silly. It's not a reference tome.
Relax.. it's humour. "For dummies" or "Idiots' guide" suggests to me that I should have no trouble with the book if an idiot can figure it out.
That said, I think most "for dummies" books are way below the level of most Slashdot readers.
My favorite Java book is "Just Java". I also took Sun's introductory Java class (not cheap but my company paid), and surprisingly enough, I learned quite a bit in five days from an excellent instructor.
JavaScript's prototyping is great in my opinion.
And the conception that you can't have private members in Javascript is just wrong.
I have to admit I've stayed away from object-oriented programming; after all, I've been writing software for nigh on twenty years without it - why make life hard?
Here is exactly why managers go for the young coders! Too many old farts that think their way is good enough versus a bunch of young ones willing to learn new ideas and tools. (I'm one of the old ones but not stuck in the past)
The book you are looking for is The Little Lisper.
0 23 397632/104-0234325-8731900?v=glance
http://www.amazon.com/exec/obidos/tg/detail/-/0
A prof of mine in college wrote it, along with The Little Schemer.
i liek poo
Your review is okay but it's really superficial. The teaching style is not the focus of the book, teaching Java is. The authors go to extraordinary lengths to make the teaching as easygoing as possible.
You didn't even touch on their emphasis on test-driven development. This, in my mind, is the highlight of the book. They not only explain it well, but they show it in every example they produce. They also make the tests before they start development, which is a good practice that they do consistently.
They also devote an entire chapter to exception handling. Too many books I've read omit it entirely or deal with it in a very casual way. By focusing on it, they really make the reader realize the value in thinking through the possibilities of what could happen.
Finally, they devote an entire chapter to packaging up your Java code for release. Other Java books I've read brush this matter aside, assuming it to be a triviality that should be self-evident to everyone. It's not and doing a proper release is critical to any software application.
As opposed to what? Butt-First Java? What gives with these stupid titles?
Here here to the Bruce Eckels sugesstion. He is far and away one of the best authors on the topic of OOP. Further, he does a lot of training, etc... and has made most/all of his books freely downloadable.
Good try - but Dijkstra wasn't talking about education, he was talking about abstraction. Remember his example? - where he mentions drawing an "abstract triangle", and how as soon as you have drawn a specific triangle, then you have made concrete decisions: "does it have an obtuse angle" etc. Dijkstra's point is that when you represent a general concept using a specific example, you get blinded to the possibilities offered by alternative examples. And he's right - to a certain degree.
You see, the counter to this is Richard Feynman. Do you recall in "Surely You're Joking?" when he mentions how he'd try to understand mathematicians by visualizing everything they said? "Take a set (a ball) - disjoint (two balls) - and then add hair, slice them up etc etc". I've used that technique ever since I read about it when I'm following arguments, and it works a beaut. It worked for him, because the mathematicians had probably not got their heads out of the equations to look at what they were doing.
So I think visualization is great (or even essential) for following a line of a complex argument or learning a technique - and that's where diagrams come in. However, unless your visualization is a perfect representation of the thing you're learning, it won't instruct you much about where the process *doesn't* work (unless it fails for your chosen example!). For instance, you won't find many pictures that can show you a nice OO class relationship, whilst simultaneously telling you much about *inappropriate* relationships.
In programming, mathematics, and any other "reason-oriented" activity, it's these negative cases that catch you out: the exception cases and unexpected inputs, the accidental divisions by zero - in short, the assumptions that you build in because you're focusing about the one way it should work, not the ways it won't. And so in practice, good experienced programmers need to clear their mind to see what they've written, not what they *think* they've written, and that, I think is Dijkstra's point.
But it's not got a lot to do with learning a new craft. And that's why good teaching books have good diagrams and plenty of manageable, relevant examples.
BTW - a good case of what Dijkstra is talking about is shown in the ancient search for the truth behind Euclid's 5th Postulate - where people got bogged down for centuries because they thought that the LINES and POINTS in geometry had to correspond to lines and points on a flat surface - plane geometry. But as soon as they abstracted it and stopped visualizing it, and treated LINE and POINT as abstract entities which simply obeyed the Rules, it gave rise to spherical and hyperbolic geometry. "Godel, Escher, Bach" tells the tale nicely!
YOU'RE my hero. After being fired from you aol tech support job, having the roof of your trailer park ripped off by the hurricane, having your son cut you off until you buy better lube, and walking in on your white trash wife being porked by the black mailman and yet you STILL find time and joy in consistently posting the same lame troll? you amaze me.
[ Reply to This | Parent ]
(t)csh sucks. Use a real shell.
And it is very good at explaining the oo 'stuff'.
JavaScript != Java
Javascript, is actually a very useful and original domain-specific language -- not as powerful as other general languages, but it does what it was designed to do, and it does it well.
Java is "wrapper language" which attempts to duplicate the features of the most popular languages -- at the time of it's creation -- (c, c++) and operating systems (unix/windows) in an attempt to achieve cross-platform portability.
Unfortunately, some of the most powerful features of c and c++ were taken out to simplify the language, and unfortunately as well, it's speed of execution never quite met the expectations of those used to the speed of similar windows-based applications (primarily in the gui department) -- although some performance improvements have finally arrived, some believe that it just may be too little, too late -- especially with the advent of c#.
It seems that contrary to the popular opinion of software developers, the popular opinion of the customer is that speed matters.
On the other hand, some amazing work on creating cross-platform wrappers has been done in the ACE and TAO projects with none of the performance penalties.
Looks like in the "evolution" of programming languages the unexpected may occur:
pascal -> c -> c++ -> java/c# -> c++
much to the chagrin of college board testmakers and
highschool teachers who just spent their summers learning java.
I decided to learn Java. I'd spent some time using JavaScript
ok...they're really nothing alike, except for the word 'java'. By the way, if you want to learn anything java, why waste cash on books...just head over to java.sun.com and go through their doco section...they have full documentation on almost every api, and have been keeping it up to date for as long as I can remember (the java trail is an excellent peice of work)
That's what I used... A WELL WORN copy still sits on my desk, although I now know the contents of every page. It sits next to "Design Patterns"...
So I haven't been able to get a job for the last 2 years after getting a BS in Computer Science because I have no experience. Yet this guy, with "20 years experience" as a "programmer" is just now just taking his first furtive into the brave new world of Object Oriented Programming in Java.
I wouldn't be surprised if his Javascript experience is more like wondering around blindly in the fog.
God, when I read this kind of stuff I feel like ending it all right now. There is so much of this deadweight hanging around that people who find it easy to learn multiple languages and actually have some potential to make a contribution to this world will never get the chance. To some recruiter this "programmer" with "20 years of experience" seems a lot more impressive than someone who might actually have a clue. I mean, what the hell does a recruiter know about anything.
Are things going to change, or should I just give up all hope for the future?
After working through it, you'll be able to write true Java programs, rather than just writing C (or whatever) programs in Java.
Ceterum censeo subscriptionem esse delendam.
On the one hand, I'm jumping up and down going "An author spoke on slashdot! And not in a planned interview!" Its the same sort of feeling I get when I read a Carmack or Wil Wheaton post here.
On the other hand, I'm hearing "Aooga; Aooga; Blatant Self Promotion Alert. Aooga; Aooga"
Hmm. I'm sure I'd be more appreciative if I'd been able to afford the book when it was reccomended as a course text. I ended up reading online examples and keeping the documentation open in another window.
Yay me!
" There are a LOT of programmers out there with no experience of anything other than C, C++, Visual Basic, Perl etc etc. Just because students are taught Java and industry DEMANDED Java don't blame people for making a lot of money out of it!"
Until the bottom falls out of the market, and people come running to Slashdot. Complaining about the glut of "in it for the money" (HTML, MSCE, whatever) monkeys clogging the system, and how the honest, for the love of it [insert poster's fav. skill here] can't get a job.
"Also, why should programming be hard? It shouldn't be. If I can find any tools, languages etc that make my job easier, quicker and less stressful I use them. And if I can be quicker it will be cheaper and if I am quicker and cheaper, I keep my job."
How about because the problems that programmers are asked to solve correctly are hard.
"If my boss comes to me with a business problem and it can be solved in a day with Java, as opposed to a couple of days in Perl, VB or whatever then the business will make a decision to go with that. "
Just make certain that your time savings isn't because you took shortcuts. You will need to maintain the code, as well as comment correctly.
"My way of thinking about objects is to consider them as little people. Each person has a job to do, and does it single-mindedly; but they're simple folk, and so you should never give them more to think about or remember than they need to do their jobs. Each one should be a good team member: they should be polite to the other objects, do exactly what they say they will, as efficiently as they can, tidy up after themselves, be as quiet as possible, and not get in the other objects' way."
Hehe. The Sims do OO.
OO is for yankers and Enron conslutants. It is a big pile of lies. No evidence, just hot air.
Why learn OO? Let me take the analogy further: scripting languages really only allow you to write short stories. They do things similar to OO programming, but the scope of their use is quite limited and when you attempt to take them out of that realm they become difficult to use and unwieldy. An OO language allows you to write novels. They allow you to program larger programs, with a better underlying structure and more complexity.
My technique is to break large problems into smaller "scripts" or "tasks", and use the database to tie them altogether. It works (if you do it right). I swear on it for most biz apps. OO philosophy focuses too much on managing large applications when one should instead focus on making lots of smaller apps instead a huge sea of Java classes. Divide and Conquer.
Table-ized A.I.
Or the girl in the bathtub, or, well, about 98% of what's in a Head First book. And this was deliberate. I'm the co-perpetrator, and creator of the Head First series.
Personally, and as smart as he is...Dijkstra is just not someone I would have ever wanted to date, or even sit next to at a dinner party.
And wasn't he also the author of something to the effect of, "Anthropomorphizing is the sign of an immature mind?"
Well, we blew that one Big Time. I think half the book is anthropomorphized *things* -- objects, variables, threads, you name it, we've turned it into a living breathing (sometimes swearing) thinking *feeling* creature.
We'd like to counter Dijkstra with someone we feel certain would kick his ass in a celebrity boxing match. Roger Schank. He was chairman of the computer science dept at Yale (and director of the artificial intelligence project). Last I heard he was Distinguished Professor of Computer Science at Carnegie Mellon University. (OK, as far as the boxing thing goes, Schank does have the advantage of being alive...)
And since we know some people will be misled by the pictures into thinking that it must be a "for the lesser mind" , or that, "if it's that fun, it must not be serious." we can point to some heavy hitters who have endorsed the book (on the cover) . One is a former PARC guru and now the Director of User Sciences and Experience Research at IBM Almaden Research Center. He also teaches advanced studies in artificial intelligence at Stanford.
Another is Ken Arnold, co-author with James Gosling of "The Java Programming Language", and a co-developer of the Jini specification.
Then again, another quote inside the book is from Rick Rockwell, the original groom from "Who Wants To Marry A Millionaire" (now Darva Conger's ex.).
PARC and FOX in the same endorsement page...
That alone will stop some folks from getting it.
And if you don't like the style, it won't even be tolerable -- at best, an acquired taste, whereas a more traditional format is usually acceptable even if you don't LOVE it.
So a lot of folks (me especially) are wondering how many people out there will actually *want* to learn this way. This is a brand new concept, so we'll have to see. If you want to know how it's being received, check on Amazon from time to time, and search on Java, and sort on bestsellers, or check the O'Reilly bestseller list. The book has been out for only a few weeks; it will be up to learners/readers to decide.
I can tell you our proudest moment came when we got an email from a guy whose wife doesn't fully approve of him reading the book.
cheers,
Kathy Sierra, co-author Head First Java
Damn funny book. It even got it's own review here on Slashdot. For those unforunates who haven't read this fine text, you can find a sample page here.
Since I'm not a highly paid author of technical books, I'll just steal this quote:
- There is simply no better way to learn Java than to have the pineal gland of an expert Java programmer surgically implanted in your brain. Sadly, most HMOs refuse to pay for this career saving procedure, deeming Java to be too experimental. At last there is an alternative treatment for those of us who cannot wait for sweeping health care reforms.
If you need more details, you can look at a preview at Amazon.Mr. Bunny's Big Cup O' Java is recommended by n out of ten doctors, where n is any integer you wish to make up to impress an astoundingly gullible public.
The book begins with an overview of the book, and quickly expands into the book itself. Just look at the topics covered:
Mr. Bunny's rucksack Farmer Jake's overalls Java
In short, MBBCOJ will teach you all you need to know for a successful career in today's rabbit development environments.
Grrr... Apparently I've moderated this dicussion, so I have to post as an AC or someone will lose precious karm.
The reviewer clearly stated that one tool has reached its usefulness peak and that it was time for a better one. No confussion unles you read what you want to read.
IANAL but write like a drunk one.
He clearly understands that they are two different things, he just states that he used one and looked for another one better suited for whatever he was doing.
IANAL but write like a drunk one.
I write ansi sql 99% of the time. it runs fine anywhere - sql server, sybase, oracle, access, whatever.
you are also assuming that a company will EVER change it's database. in my experience, this just DOES NOT ever happen. it would be so prohibitively expensive and error prone, that if you spend ONE SECOND making sure your code can be ported to another database system, you're wasting valuable company time. i've worked at a half dozen different companies. none of them ever changed database systems or OS platforms. 4 of them are out of business at this point, so the choice of an OS platform or database system has a longevity equal to the length of the company - portability to another system is not a feature that adds value. besides, web services and xml allow you to write completely platform agnostic applications while taking full advantage of native OS code. if you don't care whether data is stored in a database or a filesystem, you're throwing out the billions spent refining the capabilities of the database.
have you ever personally worked at a company that switched their mission critical systems to another OS or database? if so.... what the hell did they do it for? i can't imagine how long the time period would be before you'd see s return on investment - which is what drives the business world, not CS idealism.
from: http://www.softpanorama.org/People/scripting_guant s.shtml
...Scripting languages such as Perl and TCL represent a very different style of programming than system programming languages such as C or Java. Scripting languages are designed for "gluing" applications; they use typeless approaches to achieve a higher level of programming and more rapid application development than system programming languages. Increases in computer speed and changes in the application mix are making scripting languages more and more important for applications of the future.
;-). ...Scripting languages and system programming languages are complementary, and most major computing platforms since the 1960's have provided both kinds of languages. The languages are typically used together in component frameworks, where components are created with system programming languages and glued together with scripting languages. However, several recent trends, such as faster machines, better scripting languages, the increasing importance of graphical user interfaces and component architectures, and the growth of the Internet, have greatly increased the applicability of scripting languages. These trends will continue over the next decade, with more and more new applications written entirely in scripting languages and system programming languages used primarily for creating components. ...Scripting languages such as Perl, Python, Rexx, Tcl, Visual Basic, and the Unix shells represent a very different style of programming than system programming languages. Scripting languages assume that there already exists a collection of useful components written in other languages. Scripting languages aren't intended for writing applications from scratch; they are intended primarily for plugging together components. For example, Tcl and Visual Basic can be used to arrange collections of user interface controls on the screen, and Unix shell scripts are used to assemble filter programs into pipelines. Scripting languages are often used to extend the features of components but they are rarely used for complex algorithms and data structures; features like these are usually provided by the components. Scripting languages are sometimes referred to as glue languages or system integration languages.
... A scripting language is not a replacement for a system programming language or vice versa. Each is suited to a different set of tasks. For gluing and system integration, applications can be developed 5-10x faster with a scripting language; system programming languages will require large amounts of boilerplate and conversion code to connect the pieces, whereas this can be done directly with a scripting language. For complex algorithms and data structures, the strong typing of a system programming language makes programs easier to manage. Where execution speed is key, a system programming language can often run 10-20x faster than a scripting language because it makes fewer run-time checks.
The best introduction that shows the importance of scripting languages was written by John K. Ousterhout. He outlined four main advantages of mixed scripting language + compiled language programming in his famous paper Scripting: Higher Level Programming for the 21st Century
He pointed out that scripting languages represent a new type of languages: glue languages.
The second main idea is that scripting languages presuppose component programming and component framework can benefit from scripting languages. If you think a little bit, you can even consider Unix shell as the historically first component oriented language
The third important idea is that scripting languages are better used in tandem with compiled languages. The latter should be used for the component building where as scripting languages should be used a s a glue.
Most of the major computing platforms over the last 30 years have provided both system programming and scripting languages
Before/At this years JavaOne Sun created a Java Gaming Group aiming at making java the best language/platform for writing (including AAA style) games. Doing this will be by supporting the old java3d (win32 and linux scenegraph + opengl/direct3d functionality) and java2d (all java platforms, most hardware accelerated on win32 atm though). And, here comes the big news, by the release of the open source java opengl api - a java binding to opengl which is as fast as any c native binding thanks to the use of java nio buffers (read: native read/write memory access, the difference between java and c bindings should be unnoticable in any game). IMHO This news with java's superior networking api's will make java the nr 1 language/platform to write the next generation of game titles on.
. .
w ww.lwjgl.org pre-release 0.7 available now!
Also, maybe look for news concerning java and playstation in the next year or so (this is just a rumour that's been going for a couple of months/year at www.javagaming.org/cgi-bin/JGNetForums/YaBB.cgi).
So my advise to you is to cover the basics of how to write efficient, first class, high performance games with java.
Suggested api's to cover (all or subsets/overview):
games-core.dev.java.net (sun sponsored java gaming community site)
JoGL: 3d hardware accelerated graphics (opengl)
JoAL: 3d sound - EAX and others (openal)
JInput: high performance input framework - pullable keyboard/mouse, force-feedback gamepads, joysticks etc etc.
and also (the thing that got all above started, by making people understand java can be used to write great games):
LWJGL (a package of opengl, openal, high performance vector math package, jxinput into one small library ~ 500kb)
Another, different, version of the above, with the only exception that earlier mentioned JoGL is a more "broad" approach to 3d - whereas LWJGL is *only* targeted at gaming.
Related links:
http://community.java.net/games/
http://
http://www.puppygames.net
After learning Pascal some twenty years ago, the first time I had something to do with a compiled language was with Java in 1999. My first book was the Java in 21 days thing, which was a desaster for me. I found a used copy of Exploring Java in our company and that, although I had no experience in C or C++, was the best book I'd ever read on programming language. The occaisional, out of the blue, witty sarcastic comments could have come from any developer who is sitting in frustratedly in front of the monitor at 2AM. I refer here to the comment about how banging one's head against the monitor is also an event. I almsot wet myself when I read that.
It was things like that and not childish cartoons found in many books attempting to be simple, that made the book a good read. Programming is difficult and the acceptance of that is what helped me.
Thanks for a brilliant book.
Amazon has it with free shipping!
This previous school year I took the first year of a two year computer science class (I am part of the first year where the AP exam will be in Java instead of C++ ). I will not be able to take the second year next year because of scheduling conflict but will be able to take it my senior year. Our class left off at advanced math problems being solved by recursion (the Towers of hanoi problem sticks out in my head.) What would be a good book to review what we learned this year and be prepared for my second year of the class?
Thanks for not modding me down on that account.
I actually came across CE3 after his ActiveX book, and I've been loving him since.
IMHO, he's right up there with ESR's hacker's dictionary.
668: Neighbour of the Beast