|
Home | Switchboard | Unix Administration | Red Hat | TCP/IP Networks | Neoliberalism | Toxic Managers |
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and bastardization of classic Unix |
Books with full e-texts | Books from Macmillan's bookshelf | Reference |
Network Programming |
Specialized | |
|
Ten years ago each bookstore has at least one shelf full of Java books. Not there no longer such shelf's and Java became just a new Cobol. Boring business language that Universities are torturing students God know for the sake of what ;-)
Java is a weal, overhyped language, that is useful as a VB and Cobol replacement. But that's aabout it. As a system programming language it sucks. What is good that by design (VM is used) it is fairy portable between Linux and Windows environment. It is slow, but we do not always need speed, do we ? I believe speed usually does not matter much, if we are working with databases -- the main Java application area. JDK 1.2 is now available for Linux, so you can debug something is (supposedly) better GUI-based Windows environment and run on Linux without much troubles. Please note that Java 1.2 was recently renamed into Java 2 and is the first decent version of the language. Previous versions (1.0 and 1.1) were more like a proof of concept, than production environments.
There was a real glut of Java books up to probably 2002 or so. Only in 1999 almost a hundred was already published. The biggest problem with books on Java is that many of them were rushed out the door. It usually make sense to look for the second edition of the book -- it's at least some hope that second time the author corrected most of the errors in the first edition. Also with Java 1.2, titles published, say, before 1999 that cover v. 1.1 or v. 1.0 should be discounted 50% or more. In any case it's not recommended to buy a book not published before second half of 1998, if you get just 20% discount. Things are changing too fast...
The second consideration is that the book should have e-text and a web-site. It the Java book does not have a website or full text available online, skip it -- if the author does not care much about the book, why should you? In any case web site is a must and corrections and examples should be available from the net. Also beware of books written by several authors in which one or more author participated in several Java books published the same year -- there is good chance that the book was written by "slaves" with "generals" on the cover. Slave labor usually is not of high quality. See also Lysenkoism.
The third consideration is your own level. If you are a beginning Java programmer, than one introductory book (Teach Yourself Java 1.1 Programming in 24 Hours), one intermediate (Thinking in Java) and one reference book (Java in a Nutshell or Swing) would be useful. If you are developing Java servlets or other specialized area than you need a couple of additional books including at least one for the particular application area (for example, servets or network programming).
See also
on-line Java books,
JavaBeans books
|
Switchboard | ||||
Latest | |||||
Past week | |||||
Past month |
|
Nick Geoghegan
James Maguire's article raises some interesting questions as to why teaching Java to first year CS / IT students is a bad idea. The article mentions both Ada and Pascal � neither of which really "took off" outside of the States, with the former being used mainly by contractors of the US Dept. of Defense.
This is my own, personal, extension to the article � which I agree with � and why first year students should be taught C in first year. I'm biased though, I learned C as my first language and extensively use C or C++ in projects.
Java is a very high level language that has interesting features that make it easier for programmers. The two main points, that I like about Java, are libraries (although libraries exist for C / C++ ) and memory management.
LibrariesLibraries are fantastic. They offer an API and abstract a metric fuck tonne of work that a programmer doesn't care about. I don't care how the library works inside, just that I have a way of putting in input and getting expected output (see my post on abstraction). I've extensively used libraries, even this week, for audio codec decoding. Libraries mean not reinventing the wheel and reusing code (something students are discouraged from doing, as it's plagiarism, yet in the real world you are rewarded). Again, starting with C means that you appreciate the libraries more.
Memory ManagementManaging your programs memory manually is a pain in the hole. We all know this after spending countless hours finding memory leaks in our programs. Java's inbuilt memory management tool is great � it saves me from having to do it. However, if I had have learned Java first, I would assume (for a short amount of time) that all languages managed memory for you or that all languages were shite compared to Java because they don't manage memory for you. Going from a "lesser" language like C to Java makes you appreciate the memory manager
What's so great about C?
In the context of a first language to teach students, C is perfect. C is
- Relatively simple
- Procedural
- Lacks OOP features, which confuse freshers
- Low level
- Fast
- Imperative
- Weakly typed
- Easy to get bugs
Java is a complex language that will spoil a first year student. However, as noted, CS / IT courses need to keep student retention rates high. As an example, my first year class was about 60 people, final year was 8. There are ways to keep students, possibly with other, easier, languages in the second semester of first year � so that students don't hate the subject when choosing the next years subject post exams.
Conversely, I could say that you should teach Java in first year and expand on more difficult languages like C or assembler (which should be taught side by side, in my mind) later down the line � keeping retention high in the initial years, and drilling down with each successive semester to more systems level programming.
There's a time and place for Java, which I believe is third year or final year. This will keep Java fresh in the students mind while they are going job hunting after leaving the bosom of academia. This will give them a good head start, as most companies are Java houses in Ireland.
nickgeoghegan.net
Filed in Programming No Comments
A few things can confuse programming students, or new people to programming. One of these is abstraction.Wikipedia says:
In computer science, abstraction is the process by which data and programs are defined with a representation similar to its meaning (semantics), while hiding away the implementation details. Abstraction tries to reduce and factor out details so that the programmer can focus on a few concepts at a time. A system can have several abstraction layers whereby different meanings and amounts of detail are exposed to the programmer. For example, low-level abstraction layers expose details of the hardware where the program is run, while high-level layers deal with the business logic of the program.
That might be a bit too wordy for some people, and not at all clear. Here's my analogy of abstraction.
Abstraction is like a car
A car has a few features that makes it unique.
- A steering wheel
- Accelerator
- Brake
- Clutch
- Transmission (Automatic or Manual)
If someone can drive a Manual transmission car, they can drive any Manual transmission car. Automatic drivers, sadly, cannot drive a Manual transmission drivers without "relearing" the car. That is an aside, we'll assume that all cars are Manual transmission cars � as is the case in Ireland for most cars.
Since I can drive my car, which is a Mitsubishi Pajero, that means that I can drive your car � a Honda Civic, Toyota Yaris, Volkswagen Passat.
All I need to know, in order to drive a car � any car � is how to use the breaks, accelerator, steering wheel, clutch and transmission. Since I already know this in my car, I can abstract away your car and it's controls.
I do not need to know the inner workings of your car in order to drive it, just the controls. I don't need to know how exactly the breaks work in your car, only that they work. I don't need to know, that your car has a turbo charger, only that when I push the accelerator, the car moves. I also don't need to know the exact revs that I should gear up or gear down (although that would be better on the engine!)
Virtually all controls are the same. Standardization means that the clutch, break and accelerator are all in the same place, regardless of the car. This means that I do not need to relearn how a car works. To me, a car is just a car, and is interchangeable with any other car.
Abstraction means not caring
As a programmer, or someone using a third party API (for example), abstraction means not caring how the inner workings of some function works � Linked list data structure, variable names inside the function, the sorting algorithm used, etc � just that I have a standard (preferable unchanging) interface to do whatever I need to do.
Abstraction can be taught of as a black box. For input, you get output. That shouldn't be the case, but often is. We need abstraction so that, as a programmer, we can concentrate on other aspects of the program � this is the corner-stone for large scale, multi developer, software projects.
one of the best programming books around, March 13, 2007
- Paperback: 696 pages
- Publisher: Manning Publications (January 17, 2007)
- Language: English
- ISBN-10: 1932394842
- ISBN-13: 978-1932394849
Your passion is programming? You're fluent in Java? Then you'll love GINA - akronym for "Groovy in Action". And you'll put the Ruby-Pickaxe aside....
Reviewer: Dr. Gernot Starke "www.arc42.de" (K�ln) - See all my reviews
Dierk and his co-authors did a truly marvelous job: clear structure, highly (and I really mean HIGHLY) motivating language plus the best language-intro I read for a very long time... (and I've read quite a few during the last 20 years, believe me...)
GINA is made up from three parts: language intro, library intro and practical tips, each part approx. 5 chapters.
Lets start with the language intro: After reading a few pages I could not stop - a real page-turner. Brilliant examples - they use java's assert-statement to make the intention of every example crystal-clear, a pattern which I have never encountered before - congratulations to this idea and its perfect realization throughout the book!
In the library part you'll find intro to groovy builders, database and XML development and the integration of Groovy in "conventional" java programs. IMHO the authors again did a great job in choosing proper samples and making them transparent to us readers.
Finally, more than 100 pages on everyday solutions - a nice selection.
My personal summary: Go, get it! I liked it better than Pick-Axe (which I really adore!). The only other in quality is "Practical Common Lisp" by Peter Seibel (too sad that nobody uses Lisp these days...) - all other
programming books I know really fall behind.
Paperback - 720 pages Bk&Cd-Rom edition (May 2000)
O'Reilly & Associates; ISBN: 1565927184 ; Dimensions (in inches):
1.35 x 9.17 x 7.00
Amazon.com Sales Rank: 16,526
Average Customer Review: Based on 23 reviews.
Softpanorama review: Patrick Niemeyer is the author of Beanshell. That means that he really knows a lot about Java and JVM that is simply belong the level of an ordinary Java book author.
One of the best Java books, and agreeable read as well, November
20, 2001
Reviewer: Nicholas Cole from Paris, France
I really don't understand the mediocre reviews this book has received. Niemeyer
writes well, - he's more or less unique in this respect, - and he's very
talented at explaining complex ideas simply; when you've read his book,
you've really understood the fundamental ideas underpinning Java, many of
which are only treated in advanced specialised texts. Difficult subjects,
like method overriding, security and threads, become clear. When you've
read the book, you'll have a real understanding of Java.
I have 2 criticisms; his explanations are liberally illustrated with programmed
examples, but, - and this is the real disappointment, - there are no exercises
for the reader; its not a book that gives you hands-on experience.
The second criticism is that he doesn't go far enough; the important subject of EJBs is not touched on.
The ideal would be this book, with a certain number of extra subjects, such
as EJBs, accompanied by a workbook with worked examples and exercises.
Even without, its one of the best Java books around.
The main problem with books on java, is that generally they contain too much evangelism. A lot of authors seems to be more OO and Java adepts, than necessary. also from the point of view of teaching Java at the university it is difficult to argue that Pascal is much simpler language than Java. So what's the progress ? From that point of view Java is really horrible introductory language -- too complex and without decent debugging compilers. The best -- Symantec Caf� -- is a joke from the point of view of an introductory course. Even PL/1 would be better -- it does have decent compilers ;-) Some books start with applets. I think that this is bad idea. Java applets tend to be regarded as more fun (or "cool") by new students, if and only if they can debug their own. With current Java compilers quality this is usually not the case.
I prefer books that do not introduce applets/graphic programming in first chapters. For example Thinking in Java. IMHO, such an approach is the only reasonable approach to teach Java as introductory language, if one exists at all. See also controversial article In search of the best Java book for beginners - JavaWorld - February 1999
James Gosling Bill Joy Guy Steele - The Java Language Specification
( www.mcp.com is gone but books continue to exist of various web sites; Google is your friend)
This book Java 1.0 book and is more a textbook that a reference. It covers programming techniques that other books frequently skim over. I was impressed with the wide range of topics such as database, network, graphics, CORBA, and JavaScript. I only wish that it presented these topics with Java 1.1 features and techniques.
Java 1.1 introduces several major features to Sun's Java products, such as Java Beans, JAR files, and more. This book provides good coverage of these new tools and techniques.
Java 1.1 also brings on several changes in the language itself. There are new methods that improve on, and replace, older methods. Sun's Java compiler generates warnings when a method has been deprecated. The examples in this book have NOT been updated, so you will need another book to teach you to develop proper Java 1.1 source code.
This outdated Java 1.0 based book is nevertheless a good book. Has CORBA ORB demonstration to deliver client/server applications in java. the CD-ROM contains the complete text of another good java book Special Edition Using Java, plus 4 other books AND a "publisher's edition" of Microsoft Visual J++ Java development environment. This book was a great value when it was first published... Now you can probably find it for $10 in discount stores.
*+
Creating Web Applets With Java ~
David Gulbransen, et al / Paperback / Published by New Riders 29-Apr-1996
Amazon Price: $31.99(20% off) Oudated Java 1.0 based book. Who cares now about applets ;-). Moreover this is kind of "For Dummies" book. But browsing the book online can probably be useful.
Developing Intranet Applications With Java ~
Outdated Java 1.0 based book. Probably it would be interesting to browse the book online -- it covers interactive databases, multimedia, animations, and sound for use on the intranet.
Good reference, if you are using JDK 1.0.2. It explains the components of the Java Development Kit (JDK) and the Java programming language.
The first edition of a bestseller. Old but not first several chapters are that bad and still usable. Actually the third edition of the book that covers Java 1.2 is actually pretty decent, but right now it is not available from MCP electronic bookshelf.
The Official Gamelan Java Directory
TAPLEY, SPIVAK, HIDARY, CHAFEE
Publisher: Ziff-Davis Press
ISBN: 1562764497
Published: 20-Sep-1996
Not that bad, but outdated. For Java 1.1 coverage, look at "Maximum Java 1.1" instead. "Tricks of the Java Programming Gurus" covers Java 1.0. "Maximum Java 1.1" is the title of the new, revised edition covering Java 1.1. Every chapter has been updated, and there are several new chapters.
For introductory books with e-text available see above. Currently I see the only one introductory book without e-text that to certain extent worth its price.
Paperback - 720 pages Bk&Cd-Rom edition (May 2000)
O'Reilly & Associates; ISBN: 1565927184 ; Dimensions (in inches):
1.35 x 9.17 x 7.00
Amazon.com Sales Rank: 16,526
Average Customer Review: Based on 23 reviews.
Softpanorama review: Patrick Niemeyer is the author of Beanshell. That means that he really knows a lot about Java and JVM that is simply belong the level of an ordinary Java book author.
One of the best Java books, and agreeable read as well, November
20, 2001
Reviewer: Nicholas Cole from Paris, France
I really don't understand the mediocre reviews this book has received.
Niemeyer writes well, - he's more or less unique in this respect, -
and he's very talented at explaining complex ideas simply; when you've
read his book, you've really understood the fundamental ideas underpinning
Java, many of which are only treated in advanced specialised texts.
Difficult subjects, like method overriding, security and threads, become
clear. When you've read the book, you'll have a real understanding of
Java.
I have 2 criticisms; his explanations are liberally illustrated with
programmed examples, but, - and this is the real disappointment, - there
are no exercises for the reader; its not a book that gives you hands-on
experience. The second criticism is that he doesn't go far enough; the
important subject of EJBs is not touched on.
The ideal would be this book, with a certain number of extra subjects,
such as EJBs, accompanied by a workbook with worked examples and exercises.
Even without, its one of the best Java books around.
Core Java Foundation Classes (Core Series)
***+
Java
Network Programming, 2nd edition. Attention: no e-text. CD
contains just examples
by Merlin Hughes, Michael Shoffner, and Derek Hamner
with a chapter on CORBA by Umesh Bellur January 1999, Softbound, 860 pages
ISBN 188477749X
Here you can buy electronic version of Java Network Programming
The first edition of Java Network Programming was acclaimed by amazon.com readers as a good networking reference. It provided complete details of the I/O with extensive API coverage and CD with examples.
Society
Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers : Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism : The Iron Law of Oligarchy : Libertarian Philosophy
Quotes
War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda : SE quotes : Language Design and Programming Quotes : Random IT-related quotes : Somerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose Bierce : Bernard Shaw : Mark Twain Quotes
Bulletin:
Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 : Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law
History:
Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds : Larry Wall : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOS : Programming Languages History : PL/1 : Simula 67 : C : History of GCC development : Scripting Languages : Perl history : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history
Classic books:
The Peter Principle : Parkinson Law : 1984 : The Mythical Man-Month : How to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater�s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite
Most popular humor pages:
Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor
The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D
Copyright � 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.
This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...
|
You can use PayPal to to buy a cup of coffee for authors of this site |
Disclaimer:
The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.
Last modified: April 23, 2019