||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: Java, Fortran, C, C++, technical programming
Title: Technical Java
Author: Grant Palmer
Publisher: Prentice Hall/PTRISBN: 0131018159
Level: Introductory Java for Fortran, C or C++ programmers
Aimed at technical programmers currently coding in Fortran, C or C++, this book aims to show the virtues of Java and object-oriented programming and to provide enough of an introduction to the language to enable people to start coding. The idea behind the book is certainly a good one. Technical programming really is a distinct niche with a set of requirements that differs from web or database development in many ways. GUI design, web development or transaction processing databases are likely to rank lower, in terms of requirements, than mathematical correctness, speed of development or understanding the domain being modelled. It makes sense, therefore, to target a book at technical programmers interested in switching to Java. Unfortunately this book fails to fully live up to expectations.There is a chapter each for Fortran, C or C++ programmers making the switch. Each chapter contrasts the syntax, program structure and so on. Emphasis is placed on the relative representations of integers, floats and doubles as well as on the contents of Java's Math class compared to the native functions in the other languages. The introduction to object oriented design that follows these chapters is painfully brief at just four pages. Inheritance, polymorphism, objects and classes are all covered, but not to any great depth. These are big topics and a single chapter simply does not do justice to the core concepts that underpin object orientation in general and Java in particular. From there it is straight into Java syntax, classes, variables, methods and so on. The coverage is solid and there is enough to get someone new to the language started. The examples are generally useful and are likely to be familiar to somebody from a tech prog background. Things like class hierarchies are used to good effect to display the benefits of object technology compared to procedural programming. Where the book really picks up is in looking at a number of worked examples, such as solving systems of equations, the integration of functions, Fourier Transforms and so on. It's here that the book finally comes into its own. Classes are extended and reused, packaged up in useful hierarchies, problems solved in a generic way that the reader can later use and extend. One can't help but list the topics that would have added to this book. JNI (Java Native Interface) is barely mentioned. Most tech programmers will have libraries of useful code that they will want to re-use. Being able to access existing code from within Java is a real bonus in terms of not having to re-invent the wheel and also in having access to previously developed and tested mathematical functions. JNI might be a tricky area to cover in a book that aims to introduce Java, but it is one of those that most technical programmers are likely to want to investigate. Additionally the coverage of deployment and performance issues could have been beefed up. Java has a reputation as being a poor performer compared to native code. Some discussion of this, and the benefits of hot-spot technology would have been interested. The most useful parts of the book are those that deal directly with problems that technical programmers have to tackle. Those chapters along with the API documentation and a generic introduction to Java (like Deitel and Deitel), are more than enough to get a technical programmer versed in Fortran, C or C++ coding usefully in Java.