The developers of Java at Sun Microsystems have extensive tutorials on the language and its supporting libraries and frameworks. You should learn the basics of the language and the basics of Swing.
XML is a data exchange technology related to HTML. It is a standard for the web and its development is coordinated by www.w3c.org. You can find an overview of XML there, as well as complete specifications, discussions, etc.
You probably want to start with a simple introduction: www.brics.dk/~amoeller/XML/
There are many tools available for parsing XML.
You should all have strong programming skills in C++, know how to use the tools on Unix and Windows for the language, and know about the standard C++ libraries.
In case, you do not, you can start with this tutorial, and this STL tutorial.
A good book on C++ for people who already know how to program is Andrew Koenig and Barbara E. Moo, Accelerated C++: Practical Programming by Example, Addison-Wesley, 2000.
To learn about the Standard Template Library in depth, you should read Nicoalai M. Josuttis, The C++ Standard Library: A Tutorial and Reference, Addison-Wesley, 1999.
Once you feel very comfortable writing programs using all the features of C++, and in using the STL, you should improve your style and knowledge, by reading the excellent books by Scott Meyers:
Once you are very proficient in C++ and the STL, you should learn about the principles behind the design of the STL, namely generic programming, which is the use of templates.
First, the book, Herb Sutter, Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions, Addison-Wesley, 2000, introduces generic programming through a series of examples.
To see how to extend the STL and write your own library code, read Matthew H. Austern, Generic Programming and the STL: Using and Extending the C++ Template Library, Addison-Wesley, 1999.
The book, Andrei Alexandrescu, Modern C++ Design: Generic Programming and Design Patterns Applied, Addison-Wesley, 2001, takes generic programming much further. He illustrates the use of "policy" classes (sometimes called "mixins") to design very flexible, reusable code. The examples on memory management and locking are well worth reading. The memory management example illustrates how to use Allocators and to override new and delete.
For scientific applications of generic programming, the book that really showed that you could scrap Fortran and use C++ for numerical work is John J. Barton and Lee R. Nackman, Scientific and Engineering C++, Addison-Wesley, Reading MA, 1994, ISBN 0-201-53393-6. Their example source code can be downloaded from ftp software.watson.ibm.com (129.34.139.5) /pub/SciEng .
To see where all this fits into software engineering, especially in product lines, domain modeling, and generative techniques, read Krzysztof Czarnecki and Ulrich W. Eisenecker, Generative Programming: Methods, Tools, and Applications, Addison-Wesley, 2000.
Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, 2nd edition, Prentice-Hall, 2001.
G. Booch, J. Rumbaugh and I. Jacobson, The Unified Modeling Language User Guide:, Addison-Wesley, 1999.
Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, 2nd edition, Prentice-Hall, 2001.
The classic Gang-of-Four book that introduced patterns to the software community is still the best reading on the subject: Erich Gamma, Richard Helm, Ralph Johnson, and John and Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994.
Patterns pages.
Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, 2nd edition, Prentice-Hall, 2001.
More to come...
Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, 2nd edition, Prentice-Hall, 2001.
Christine Hofmeister, Robert Nord, and Dilip Soni, Applied Software Architecture, Addison-Wesley, 2000 is based on the experience within Siemens.
F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal, Pattern-Oriented Software Architecture, Wiley, 1996.
Len Bass, Paul Clements and Rick Kazman, Software Architecture in Practice, Addison-Wesley, 1998.
You should also look at the Architectural Tradeoff Analysis Method (ATAM) at the SEI. A good starting point is R. Kazman, M. Klien, P. Clements, ATAM: Method for Architecture Evaluation, Technical Report CMU/SEI-2000-TR-004, 2000.
There is a series of three books that has an up-to-date and fairly complete coverage of frameworks published by Wiley. The basic one is M.E. Fayad, D.C. Schmidt, and R.E. Johnson, editors, Building Application Frameworks: Object-Oriented Foundations of Framework Design. Wiley, 1999.
The FAST methodology used at Lucent is described in D.M. Weiss and C.T.R. Lai, Software Product-Line Engineering, Addison-Wesley, 1999. It defines small domain-specific languages, and uses generative techniques to build applications.
J. Craig Cleaveland, Program Generators with XML and Java, Prentice-Hall, 2001.
Krzysztof Czarnecki and Ulrich W. Eisenecker, Generative Programming: Methods, Tools, and Applications, Addison-Wesley, 2000.
K.C. Kang, S. Kim, J. Lee, K. Kim, E. Shin, and M. Huh, FORM: A feature-oriented reuse method with domain-specific reference architectures, Annals of Software Engineering, volume 5, pp.143-168, 1998.
As a biologist wishing to use the tools and databases that exist, and to understand what they do, and how to interpret the results, then a good starting point for sequences and protein information is the book, Teresa K. Attwood and David J. Parry-Smith, Introduction to Bioinformatics, Prentice-Hall, 1999.
For those who wish to go a bit further into the computing side, such as using Unix and writing some scripts themselves, then I recommend the book, Cynthia Gibas and Per Jambeck, Developing Bioinformatics Computer Skills, O'Reilly and Associates, Inc, 2001.
Building bioinformatics tools requires a solid understanding of programming, design, and extensibility on the computer side, and an appreciation of the domain of genomics, proteomics, ... as they develop. You have to be constantly learning because the broad area of genomics is advancing so quickly.
You can start with the book, Cynthia Gibas and Per Jambeck, Developing Bioinformatics Computer Skills, O'Reilly and Associates, Inc, 2001.