Showing posts with label java programming. Show all posts
Showing posts with label java programming. Show all posts

Understanding Object-Oriented Programming With Java Review

Understanding Object-Oriented Programming With Java
Average Reviews:

(More customer reviews)
This is not a book to learn java from, nor is it even a good reference. Read and understand the title before buying this book.
This review refers to the previous edition to this one.
I found the text ordered well, with most examples clearly explained. There were some minor bugs in the code which a beginning java programmer would struggle with.
After finishing the book, and running the examples, and working through several of the exercises, I found that I understand OOP much better, and of course understand java better too.
I've noted several people who don't know java syntax are frustrated by the book, as they are expecting to learn java from it, and are never reaching the point where they will learn OOP or java from the book.
In conclusion, don't buy the book to learn java, buy it only if you need to learn OOP and are having difficulty doing so.

Click Here to see more reviews about: Understanding Object-Oriented Programming With Java

Timothy Budd, leading author, educator and researcher in the object-oriented programming community, provides a deep understanding of object-oriented programming and Java.Understanding Object-Oriented Programming with Java teaches readers why the Java language works the way it does, as opposed to many other books that focus on how Java works.Readers learn about the development decisions that went into making the Java language, and leave with a more sophisticated knowledge of Java and how it fits in the context of object-oriented programming. Throughout the text, the focus remains on teaching readers to master the necessary object-oriented programming concepts. Dr. Budd explains to the reader in clear and simple terms the fundamental principles of object-oriented programming, illustrating these principles with extensive examples from the Java standard library. In short, he thoughtfully created this book, not as a reference manual for the Java language, but as a tool for understanding Java and the object-oriented programming philosophy.Highlights:* Provides several graduated example programs in Part II (i.e., cannon and pinball games) for readers to work through and successively learn object-oriented programming features.* Includes extensive examples from the Java standard library so that readers can better understand the many design patterns found in the AWT, the multiple purposes for which inheritance is used in the standard classes, and more. * Discusses features of Java in Part V that are important for students to understand, but not necessarily notable for their object-oriented features. Instructors have the flexibility to omit altogether, or introduce in parallel with earlier material. 0201308819B04062001

Buy Now

Click here for more information about Understanding Object-Oriented Programming With Java

Read More...

Data Structures and Algorithms in Java Review

Data Structures and Algorithms in Java
Average Reviews:

(More customer reviews)
I'm finding the 4th edition reasonably clear and comprehensive. However, the book is teeming with typographical errors. Most of them are typesetting errors involving superscripts and subscripts that overlap the adjacent characters so they aren't fully legible. But there are numerous other miscellaneous typos.
So, I've been marking them in my copy, in order to submit them to the authors or publisher, but apparently they don't want to know about the typos. The "errata" section at java.datastructures.net contains no errata and no instructions on how to submit errata. I wrote to one of the authors to ask how to submit errata, but received no reply.

Click Here to see more reviews about: Data Structures and Algorithms in Java

Fundamental data structures in a consistent object-oriented frameworkNow revised to reflect the innovations of Java 5.0, Goodrich and Tamassia's Fourth Edition of Data Structures and Algorithms in Java continues to offer accessible coverage of fundamental data structures, using a consistent object-oriented framework. The authors provide intuition, description, and analysis of fundamental data structures and algorithms. Numerous illustrations, web-based animations, and simplified mathematical analyses justify important analytical concepts.Key Features of the Fourth Edition:* Updates to Java 5.0 include new sections on generics and other Java 5.0 features, and revised code fragments, examples, and case studies to conform to Java 5.0.* Hundreds of exercises, including many that are new to this edition, promote creativity and help readers learn how to think like programmers and reinforce important concepts.* New case studies illustrate topics such as web browsers, board games, and encryption.* A new early chapter covers Arrays, Linked Lists, and Recursion.* A new final chapter on Memory covers memory management and external memory data structures and algorithms.* Java code examples are used extensively, with source code provided on the website.* Online animations and effective in-text art illustrate data structures and algorithms in a clear, visual manner.Access additional resources on the web www.wiley.com/college/goodrich):* Java source code for all examples in the book* Animations* Library (net.datastructures) of Java constructs used in the book* Problems database and search engine* Student hints to all exercises in the book* Instructor resources, including solutions to selected exercises* Lecture slides

Buy Now

Click here for more information about Data Structures and Algorithms in Java

Read More...

SCJP Sun Certified Programmer for Java 5 Study Guide (Exam 310-055) (Certification Press) Review

SCJP Sun Certified Programmer for Java 5 Study Guide (Exam 310-055) (Certification Press)
Average Reviews:

(More customer reviews)
When I started reading the reviews, I could sence a lot of familiarity with the comments. Later I realized that the reviews were for the book of the same title but on the previous Java 1.4.
Therefore a word of caution so that readers do not take the reviews literally for this latest book on Java 5.

Click Here to see more reviews about: SCJP Sun Certified Programmer for Java 5 Study Guide (Exam 310-055) (Certification Press)

Get the book that shows you not only what to study, but how to study. The only classroom-based integrated study system for professional certification gives you complete coverage of all objectives for the Sun Certified Programmer for Java 5 exam, hundreds of practice exam questions, and hands-on exercises. The CD-ROM features full practice exam software plus an adaptive test engine.

Buy Now

Click here for more information about SCJP Sun Certified Programmer for Java 5 Study Guide (Exam 310-055) (Certification Press)

Read More...

Data Structures and Algorithms in Java (2nd Edition) Review

Data Structures and Algorithms in Java (2nd Edition)
Average Reviews:

(More customer reviews)
This is an excellent book on data structures and algorithms and would be a great addition to a student's text book. Fortunately Lafore does not dwell on the algorithm analysis as many data structures books do. This is a plus for me, as most texts on the subject get the reader bogged down in the analysis portion of the subject matter. Note: algorithm analysis is a very important subject I just don't believe it should be taught in parallel with data structures to the extent it is. Its easier for me and many others to first learn how to implement data structures and get a feel for their performance then move on to in-depth analysis.
In this book you'll learn the more important data structures without the heavy mathematics many algorithm and data structure books torture readers with. The book is written in very accessible language and the applets really help the inexperienced see the algorithms in action.
As I mentioned this book does not cover algorithm analysis in detail. A step up from this book would be one of Sedgewick's books which provides more detail on the analysis front and some really 'tight' implementations. A good book that focuses on Algorithm Analysis is Intro to Algorithms by Cormen. You better have your math skills up to snuff for the Cormen book however.

Click Here to see more reviews about: Data Structures and Algorithms in Java (2nd Edition)

Data Structures and Algorithms in Java, Second Edition is designed to be easy to read and understand although the topic itself is complicated. Algorithms are the procedures that software programs use to manipulate data structures. Besides clear and simple example programs, the author includes a workshop as a small demonstration program executable on a Web browser. The programs demonstrate in graphical form what data structures look like and how they operate. In the second edition, the program is rewritten to improve operation and clarify the algorithms, the example programs are revised to work with the latest version of the Java JDK, and questions and exercises will be added at the end of each chapter making the book evenmore useful.Educational SupplementSuggested solutions to the programming projects found at the end of each chapter are made available to instructors at recognized educational institutions. This educational supplement can be found at www.prenhall.com, in the Instructor Resource Center.

Buy Now

Click here for more information about Data Structures and Algorithms in Java (2nd Edition)

Read More...

Enterprise J2ME: Developing Mobile Java Applications Review

Enterprise J2ME: Developing Mobile Java Applications
Average Reviews:

(More customer reviews)
I go to Java Users Groups (yes, I'm struggling to get in touch with my inner geek) once every two or three months. Sometimes there's an engaging speaker, but most of the time the fellow up front looks like he's just swallowed a hot pepper, speaks like he has a permanent stutter, and answers questions like I'm speaking Greek. (I'm not making fun; I had a hard time when I was in front of a JUG too.) Regardless of the quality of the speaker, I gain something just by watching the presentation--he points out interesting technologies and usually has a list of resources at the end that I can use for further research.
I think Michael Yuan would be a great speaker at a JUG, as he seems to have a masterful understanding of Java 2 Platform, Micro Edition (J2ME). However, the true value of his book, Enterprise J2ME, was in its introduction of new ideas and concepts, and the extensive resource listings. This book is a survey of the current state of the art in mobile java technology. Whatever your topic is, except for gaming development, you'll find some coverage here. Securing information on the device or network, XML parsing strategies, messaging architectures, and data synchronization issues are all some of the topics that Yuan covers.
My favorite chapter was Chapter 7, 'End to End Best Practices.' Here, Yuan covers some of the things he's learned in developing his own enterprise applications, and offers some solutions to five issues that differ between the J2ME world and the worlds familiar to most Java developers: J2EE and J2SE. He offers capsule solutions to the issues of "limited device hardware, slow unreliable networks, pervasive devices, ubiquitous integration [and] the impatient user." Later in the book, he explores various architectures to expand on some of these capsules.
However, the strength of this book, exposing the reader to a number of different mobile technologies, is also its weakness. JUG speakers very rarely dive into a technology to the point that I feel comfortable using it without additional research; I usually have to go home, download whatever package was presented, and play with it a bit to get a real feel for its usefulness. This book was much the same. Some of the chapters, like chapters 12 and 13, where issues with databases on mobile devices (CDC devices, not CLDC devices) weren't applicable to my kind of development, but you can hardly fault Yuan for that. Some of the later chapters felt like a series of 'hello world' applications for various vendors. This is especially true of chapter 12, and also of chapter 20, which is a collection of recipes for encryption on the device.
Additionally, I feel like some of the points he raised in Chapter 7 are never fully dealt with. An example of this is section 7.3.3, "Optimize for many devices." The project I'm on is struggling with this right now, but I had trouble finding any further advice on this important topic beyond this one paragraph section. However, these small issues don't take away from the overall usefulness of the book--if you are developing enterprise software, you'll learn enough from this book to make its purchase worthwhile.
However, I wouldn't buy the book if you're trying to learn J2ME. Yuan gives a small tutorial on basic J2ME development in Appendix A, but you really need an entire book to learn the various packages, processes and UI concerns of J2ME, whether or not you have previously programmed in Java. Additionally, if you're trying to program a standalone game, this book isn't going to have a lot to offer you, since Yuan doesn't spend a lot of time focused on UI concerns and phone compatibility issues. Some of the best practices about limited hardware may be worth reading, and if it's a networked game, however, you may gain from his discussions in Chapter 6, "Advanced HTTP Techniques." In general though, I'm not sure there's enough to make it worth a game developer's while.
I bought this book because I'm working on a networked J2ME application, and it stands alone in its discussion of the complex architectural issues that such applications face. It covers more than that, and isn't perfect, but it is well worth the money, should you be facing the kind of problems I am. Indeed, I wish I had had this book months ago, as I'm sure it would have improved the my current application.

Click Here to see more reviews about: Enterprise J2ME: Developing Mobile Java Applications

Mobile enterprise information systems will soon be one of the major applications of wireless technology. Java 2 Micro Edition is poised to be an important platform for developing wireless enterprise applications. Enterprise wireless applications allow workers to access crucial business information from any place at any time. This book covers the design, architecture, tools and development methodology for the Web Services that will be the killer app for this very promising platform. The author explains the value of mobile commerce and discusses architecture and system design considerations. This book explains not only API usages but also the designs behind the APIs so that you can learn how to extend those technologies for your custom requirements!

Buy Now

Click here for more information about Enterprise J2ME: Developing Mobile Java Applications

Read More...

The Art of Multiprocessor Programming Review

The Art of Multiprocessor Programming
Average Reviews:

(More customer reviews)
The Art of Multiprocessor Programming is an outstanding text that will soon become a classic. I give a chapter by chapter review of it below.
Practitioners that are already well versed in parallel programming can jump directly to Chapter 7, however, I would suggest at least skimming Chapters 2, 3 and 4. Even those programmers who understand shared memory and locking may be shocked at how relaxed memory models or compiler optimizations can reorder operations causing innocent looking code to break.
----------------------------------------
Chapter 1 - Introduction
Why is this book called "The Art of Multiprocessor Programming" and not "The Art of Parallel Programming?" It is not by accident. There is a directed effort to explain parallel programming concepts as they relate to multi-core (or many-core) architectures. In particular, shared-memory multiprocessors have specific implementation details, such as cache coherence policies, that directly affect parallel software run on such architectures. The introduction gives a brief overview of the direction of the text: principles and practice.
----------------------------------------
Part 1 - Principles
Chapter 2 - Mutual Exclusion
Mutual exclusion is a key concept to multi-threaded programming, and this chapter is rightly placed at the beginning of the text. This chapter presents some of the foundational concepts in parallel computing, such as, understanding time related to operation interleavings, pessimistic critical sections, forward progress, deadlocks and fairness. In addition, some of the classic algorithms are presented here, such as Lamport's Ticket Locking and Peterson's 2-Threaded Lock.
Chapter 3 - Concurrent Objects
This chapter starts off simple, but gets complex fast. While experts will understand and acknowledge the importance of this chapter, less experienced programmers will find it very challenging to understand and may be turned off: don't give up!
My suggestion to non-experts is to focus on understanding two concepts of this chapter: hardware sequential consistency (3.4) and software linearizibility (3.5). Once you understand both concepts, skim all other sections except section 3.8.
Java programmers may want to pay special attention to the Java Memory Model section (3.8) and ill-formed unsynchronized code. General programmers will also be interested in this section as it is important to understand how the hardware's memory consistency model, the programming language's memory model and the compiler's operation reordering optimizations may interfere with what "looks like" correct code.
Do not be discouraged by the difficult of this chapter. It is one of the most difficult chapter in the text. Get through it and keep reading.
Chapter 4 - Foundations of Shared Memory
This chapter concentrates on understanding shared memory, the cornerstone of all multi-threaded applications. It explains how to implement shared memory that behaves "correctly" without using mutual exclusion. The different types of memory that are discussed are single-reader single-writer (SRSW), multiple-reader single-writer (MRSW) and multiple-reader multiple-writer (MRMW). This is an important chapter for non-experts to think about, as it explains how operation interleavings are not as discrete as we pretend they are and how shared memory should behave in all possible cases.
Chapter 5 - The Relative Power of Primitive Synchronization Operations
This chapter explains the varying strength of different wait-free synchronization primitives. Consensus numbers will undoubtedly confuse novice parallel programmers. In short, the higher the consensus number the better. A high consensus number, say N, for a synchronization primitive means that synchronization primitive can "correctly" solve the consensus problem for N concurrently executing threads. For example, critical sections have an infinite consensus number (e.g. support an infinite number of concurrent threads). Atomic registers have a consensus number of 1, they support only 1 thread's execution that is guaranteed to consistently and validly solve the consensus problem.
The most important point of this chapter (in my opinion) is that compare-and-swap (CAS), or compare-and-set, has an infinite consensus number (section 5.8). This is why modern instruction set architectures (ISAs) all provide CAS: it is critical to supporting an unlimited number of concurrently executing threads. Realizing the importance of CAS is vital for advanced parallel programmers who want to implement nonblocking algorithms.
Chapter 6 - Universality of Consensus
This chapter explains how to build universal consensus for your own concurrent objects. While it will be an interesting chapter for experts, novices may want to skip it.
----------------------------------------
Part II - Practice
Chapter 7 - Spinlocks and Contention
This chapter explains the important differences between different types of locking. It explains how to implement locks using assembly level operations (test-and-set and test-and-test-and-set), how to reduce bus contention using backoff, how to reduce cache pressure by having threads spin on their local cache memory and how to manage an unknown number of threads using locks.
After reading this chapter, most readers should have an appreciation for the hardware complexity of implementing something as simple as a lock. Some programmers may argue that they should not need to know how hardware behaves. While I would like to agree, the unfortunate state of multi-core programming currently requires a basic understanding of memory consistency models and cache behaviors. Herlihy and Shavit note this and make an effort to address it in a "just what you need to know" fashion, as done in this chapter.
Chapter 8 - Monitors and Blocking Synchronization
This chapter explains monitors, conditions, the differences between readers and writers, and reentrant locks. Java programmers will be especially interested in understanding monitors, while all OO programmers should have an appreciation of synchronizing an entire class. Moreover, the section on reentrant locks is simple but important to preventing deadlocks.
----------------------------------------
Unofficially, Chapters 9 - 11 focus on achieving parallelism in algorithms that have sequential bottlenecks and are therefore inherently sequential.
----------------------------------------
Chapter 9 - Linked Lists: The Role of Locking
The chapter explains how to implement ordered linked lists (e.g., IntSets or just sets) in a variety of different ways. The chapter starts out with the most basic implementation and then begins to increase performance by relaxing the strictness of the required thread synchronization.
Chapter 10 - Concurrent Queues and the ABA Problem
The chapter explains how to implement pools, a collection of unordered or ordered items. The chapter then explains the ways to implement pools as different types of queues, containers with first-in-first-out behavior. The chapter also explains a classic parallel problem known as ABA, where thread1 observes x == A, thread2 does x=B and then x=A and thread1 then observes x == A. The ABA problem is a subtle, but important problem.
Chapter 11 - Concurrent Stacks and Elimination
This chapter starts where the last chapter left off; it explains how to implement concurrent stacks, containers with first-in-last-out behavior. The chapter also explains a neat cancellation problem called elimination. Elimination is useful for avoiding overflows, underflows and other types of bounded problems.
Chapter 12 - Counting, Sorting and Distributed Coordination
This chapter explains how to take problems that seem to be inherently sequential and make them parallel. The chapter also explains both combining and diffracting trees, both of which are very interesting ways to make sequential problems parallel. This chapter is one of the more complex chapters of the text. Some readers may want to skim it.
----------------------------------------
Unofficially, Chapters 13 - 15 focus on achieving parallelism in algorithms that are inherently parallel. Readers will enjoy seeing how easy it is to extract parallelism in these naturally parallel algorithms.
----------------------------------------
Chapter 13 - Concurrent Hashing and Natural Parallelism
This chapter explains how to build parallel hash tables, with both open and closed addressing. First, the authors explain how to implement hash tables using coarse-grained locks, then with fine-grained locks, then with no locks at all. The chapter also explains how to deal with open-addressed hash tables which are particularly challenging.
Chapter 14 - Skiplists and Balanced Search
Most non-experts that make it this far in the text will be greatly rewarded by this chapter. Chapter 14 explains skiplists, an intriguing way to implement a container that has logarithmic search time and that is inherently parallel. Unlike red-black trees or balanced binary trees that yield logarithmic search time complexity, skiplists do not need to be rebalanced. Skiplists do not need to be rebalanced due to their unique algorithmic layering, making them inherently parallel. As such, skiplists have a notable benefit over their inherently sequential logarithmic search time counterparts.
This is a critically important chapter for practitioners hoping to exploit high parallelism...Read more›

Click Here to see more reviews about: The Art of Multiprocessor Programming


As the computer industry changes from single-processor to multiprocessor architectures, this revolution requires a fundamental change in how programs are written. To leverage the performance and power of multiprocessor programming, also known as multicore programming, you need to learn the new principles, algorithms, and tools presented in this book. It includes fully-developed Java examples detailing data structures, synchronization techniques, transactional memory, and more.

Prof. Maurice Herlihy, who coined the phrase "transactional memory," is on the faculty of Brown University. He is the recipient of the 2003 Dijkstra Prize in distributed computing. Prof. Nir Shavit is on the faculty of Tel-Aviv University and a member of the technical staff at Sun Microsystems Laboratories. In 2004 they shared the Gödel Prize, the highest award in theoretical computer science.
* THE book on multicore programming, the new paradigm of computer science* Written by the world's most revered experts in multiprocessor programming and performance* Includes examples, models, exercises, PowerPoint slides, and sample Java programs

Buy Now

Click here for more information about The Art of Multiprocessor Programming

Read More...

Head First Java, 2nd Edition Review

Head First Java, 2nd Edition
Average Reviews:

(More customer reviews)
When I first saw "Head First Java", it reminds me of the colorful "conversational English" books I had when I started to learn English years ago. The casual, humorous books have turned out effective for English language learning. Is that style good for the Java language learners as well? Is this type of books for beginners only?
With those questions in mind, I started to read "Head First Java". Since I consider myself a Java expert (I wrote a Java book myself, after all), I decided that I would NOT read the book from cover to cover. Instead, I would randomly flip through the book for the humorous stories and photos. I figured that if I cannot learn much new about Java from a "beginner" book, I can at least have some fun.
Geez, I was wrong. I was ADDICTED to the book's short stories, annotated code snippets, mock interviews, puzzle games and brain exercises. They are not only entertaining but also informative. It may be a beginner's book but the stuff they cover are definitely deep enough for expert readers as well (e.g. multiple inheritance, polymorphism, inner classes, threads, RMI, ... just to name a few). The best of all is that I can actually remember the things I learned from the book because I associate them with the stories and pictures. I guess it has something to do with the fact that both sides of my brain are active when reading this book: The right side is for the stories and the left side is for the technical and logic stuff.
There are other great Java books (e.g. "Thinking in Java" by Bruce Eckel) in the market. But they are all very serious and require the readers to spend hours to read entire chapters. The great thing about "Head First Java" is that the bite-size code snippets and stories allow me to learn something about Java in my 5-10 minutes spare time, one piece a time.
The overall writing style is casual and enlightened. The presentation style (fonts and placements of graphical elements) fits the content very well. The book covers a wide variety of Java topics including: basic code structure and language syntax, OOP concepts, math and numbers, exception handling, the Swing GUI library, serialization, network, and distributed computing.
Of course, the casual style is not for everyone. I know people who love the re-assuring feeling from "serious" books. But I can re-assure you that Kathy and Bert are authoritative figures in the Java training community. The content is absolutely first class. I highly recommend "Head First Java" for both Java beginners and expert readers.

Click Here to see more reviews about: Head First Java, 2nd Edition



Buy Now

Click here for more information about Head First Java, 2nd Edition

Read More...