| Title: | Programming Visual Basic .NET, 2nd Edition |
| Authors: | Jesse Liberty |
| Publisher: | O'Reilly |
| Pages: | 558 |
| Reviewer: | Jason Scott Gessner |
| Synopsis: | A great language reference, combined with some fairly basic introductions to web, windows and database programming. |
| Table of Contents | Part I. The Visual Basic .NET Language 1. Visual Basic .NET and the .NET Framework 2. Getting Started: |
The discussion is still in progress about whether or not VB.NET is a gateway to a brave new world for Visual Basic programmers or the first step in a gradual phase out of the language in favor of C#. The debate is really academic at this point, however. VB is not going away any time soon (or not soon enough for some folks, but I will leave language wars out of this review). The .NET upgrade for VB has given us a real compiler now, freely available and separate from the excellent Visual Studio.NET IDE. I have always used Perl to help automate some of my more mundane VB tasks and now with a real compiler at hand, this task becomes even easier.
Jesse Liberty's _Programming Visual Basic .NET, 2nd Edition_ has been at my side for nearly a month now and has been an excellent reference and tutorial. No book is perfect, however and this is no exception. While providing an excellent primer for the language, several subjects are presented almost in passing and a couple of really fascinating new developments are in no way given a thorough treatment. That being said, VB.NET is a full-featured language being used for everything from data access to N-tier application development. No reference could cover that entire topic in under 600 pages.
Programming Visual Basic .NET, 2nd Edition is not a migration guide for VB6 developers. The differences between the languages are many, but they are not showstoppers, for the most part. Their is one 2 page section devoted to the differences between VB.NET and VB6, but it sums up the changes neatly. No Variant type, no Set statement (objects still have get and set accessor methods) and the Currency type is replaced by the Decimal type. Piece of cake, right? Not mentioned in the intro, but expanded later in the book, are ForEach access for arrays, built-in collections (hashes plus some) and exception based error handling.
Migration issues aside, some programmers are going to come to this language fresh and this is the book's main audience. No prior knowledge of VB is required or expected. To an experienced VB coder, this makes the first 100 pages of the book an excercise in skimming. This is dangerous, though, as the object-oriented features are much improved over their VB6 ancestors. Inheritance and polymorphism are both implemented on-par with C++( and managed C++), Java and C#. This is a must since, VB.NET relies on the CLR (Common Language Runtime) and must be able to produce the same type of ILASM (.NET assembly language) as the other .NET languages. The book does provide an excellent language reference, even if the examples are slightly contrived. The object examples use a pets analogy and some other examples use a Window class that outputs text mimicking a GUI (fairly odd, and not remotely useful).
The book's main deficiency comes in its coverage of the actual applicatoin of the language. Windows Forms, Web Forms (ASP.NET), Data Access and Web services are given only a chapter each. These chapters barely break the surface on any of those subjects and fail to address many basic deployment and programming methodology issues with each of those areas. This scant coverage is inevitable, however. As I said at the beginning of this review, VB is not a toy language and covers the spectrum of modern programming tasks.
VB.NET also introduces some extremely advanced features that let programmers control code generation, generate stub and proxy classes and perform detailed introspection of existing code and language constructs. These topics are only given a single chapter as well. The final 2 chapters, "Marshalling and Remoting" and "Threads and Synchronization" barely qualify as introductions.
On the whole, the book provides an excellent reference to the language, despite its flaws in dealing with specific issues and application models. Jesse Liberty has produced a fine 2nd edition, although the timing of the book's release just missed the 1.1 update to the .NET framework. VB6 programmers as well as new VB.NET programmers would be well served by keeping this book near their keyboards.
