ACCU 2010 Conference

Total Page:16

File Type:pdf, Size:1020Kb

ACCU 2010 Conference Conference Chair: Giovanni Asproni Conference Committee: Event Manager: Astrid Byro Francis Glassborow Archer Yates Associates Ltd Paul Grenyer Threshers Yard, West Street Alan Lenton Kingham, Oxon. OX7 6YF Ewan Milne Phone: +44 (0) 1608 659900 Roger Orr Fax: +44 (0) 1608 659911 James Slaughter Email: julie at archer‐yates.co.uk Keynote speakers announced In 2010 we'll have yet another exceptional line‐up of keynote speakers: • Jeff Sutherland, co‐inventor of Scrum • James Bach, well known tester and author of "Lessons Learned in Software Testing" • Dan North, Agile coach, software developer and the inventor of Behaviour Driven Development • Russel Winder, consultant, author, and expert in parallel and distributed systems. As usual, there will be a set of pre‐conference tutorials which will include: • A Certified Scrum Master Course taught by Jeff Sutherland and Gabrielle Benefield (two days 12 and 13 of April) • A one day tutorial on the D programming language by Andrei Alexandrescu and Walter Bright • A one day tutorial on testing by James Bach Sessions 5 Steps to Kanban (Karl Scotland) 90 mins A Kanban System for Software Development provides an alternative means of creating an Agile Development process using Lean Thinking. Creating a Kanban System is not as simple as adopting a previously defined process as a starting point. Instead, a team needs to come up a model of its own process which will form the basis for further continuous improvement. This talk will introduce 5 steps that a team can use to create their own Agile process using a Kanban System for Software Development. A Simple Matter of Configuration" - how can we tame the complex world of configuration? (Roger Orr) 90 mins Configuration is a vital element of many programs. However it is often hard to get configuration right, leading to people wasting time and programs that do not work correctly. In my experience explicit discussion of design options for the configuration of a program is rare and, all too often, the choice is made arbitrarily. I believe that looking at the usage patterns of the program early on helps to pick the best method(s) for configuring it and hence reduce the cost of problems caused by configuration issues. Configuration is a complex subject and there doesn't seem to be an obvious single solution that works in every case, but we can try to fight against the common 'anti‐pattern' of using multiple, unrelated, configuration techniques at the same time. I will look at some of the issues surrounding configuration; firstly by trying to answer the "six key questions" (who, why, what, where, when and how) for this subject to help understand the size of the problem and the forces at work. ACCU Conference 2010 April 14‐17, 2010. Barcelo Oxford Hotel, Oxford, UK 1 of 30 I'll then sketch out some possible design patterns and look at their trade‐offs and interaction with the intention that I (and you) can reduce the pain of getting programs working in different environments by making more informed and deliberate decisions. I am looking at the problem in the general case, using examples from various problem domains, and expert knowledge of a particular language or API is not assumed. A Year of Misbehaving - A Retrospective on using BDD in a commercial enterprise (Mauro Talevi) 90 mins So you've heard about Behaviour‐Driven Development (BDD) and you're intrigued. You think it might just work but only in a very Agile environment. You ask yourself if it could work in a realistic commercial enterprise. We've done just that for the past year: we'll present a retrospective on using BDD on a high‐profile project in a global corporate bank. We'll share the lessons learnt, including what worked well and what could be improved. We'll also introduce BDD and JBehave for Java‐based development environments. Outline: • Introducting BDD • Introducting JBehave for Java‐based development o Using with IDE o Using with CI o Using with Web Runner • Introducing the Case Study o A Java enterprise project in a global corporate bank o Greenfield project in a non‐Agile environment o Extremely volatile market conditions • What worked well o Communication with business and specification of acceptance criteria o Adapting to rapidly changing priorities o Use of web runner for setting up and driving demos o Integration with development tools • What can be improved o Dealing with large datasets whose formats do not refactor easily o Finding the best form of outcome verification o Ensuring scenarios are written earlier in the iteration cycle o Avoiding unnecessary duplication of scenarios and steps • Lessons learnt Abusive C++ (Jonathan Wakely, Richard Harris) 90 mins Time and time again we programmers have discovered that the clever tricks of yesterday are the maintenance nightmares of tomorrow, and yet still we are drawn, moth‐like, to the leet. In this session we shall describe a selection of our own clever C++ tricks, some of which we have learned to avoid, some of which have yet to burn us and some of which we have yet to use... Adventures in QA (Dirk Haun) 90 mins In this session, we follow the adventures of a software developer who unexpectedly finds himself in the role of head of quality assurance. Hilarity ensues as worlds collide and our protagonist realizes he doesn?t even speak the same language as his new colleagues. This session will be exposing some of the gruesome details of real‐life software testing. Courses for testers and shiny testing tools are readily available, but how widely are they actually used, useful, or even usable? Is there a need for a "professionalism in testing" initiative? ACCU Conference 2010 April 14‐17, 2010. Barcelo Oxford Hotel, Oxford, UK 2 of 30 Also, while testing is widely accepted as a necessity, it isn't always seen as an integral part of the development process yet. So we will be looking into this and related (ongoing) struggles with management and development. Lessons learned and a chance to exchange stories from the trenches will round off the session. Analysing Large Data Sets - an introduction to MapReduce with Apache Hadoop (Gavin Heavyside) 45 mins Apache Hadoop (http://hadoop.apache.org) is an open‐source implementation of MapReduce, the algorithm famously used by Google to process large data sets. The Hadoop framework provides a reliable, scalable distributed environment for anlalysing massive amounts of data, and is used by companies from startups with a single server to Yahoo! whose largest cluster has 4000 nodes. I will introduce Hadoop and the MapReduce programming model, with a discussion of how the Hadoop framework helps you process massive amounts of data in parallel across many machines. The session will cover subprojects of Hadoop, including the distributed file system HDFS and the distributed database HBase. Hadoop is written in Java, but I will show how the Streaming library enables developers to access the power of MapReduce from any language. I will also introduce Pig and Hive, two subprojects of Hadoop that enable you to run complex queries using a high‐level query language (Pig) or an SQL‐like syntax (Hive). These tools enable ad‐hoc querying and analysis of large datasets, generating the appropriate MapReduce jobs for you. Architecture Refactoring - Motivation, Approach and Patterns (Michael Stal) 90 mins For software engineers creating new code is one side of the coin ,while checking its conformance, sustainability and quality represents the other side. Adding new features is considered a creative act, whereas improving quality is rarely respected but often neglected. If problems are built into a software architecture, it will be the more complicated and expensive to get rid of them the more we postpone appropriate activities. One way to avoid such design erosion is to regularly apply architecture refactoring. Architecture refactoring extends code refactoring to also cover architecture artifacts. The tutorial will introduce the core concepts of architecture refactoring, introduce refactoring patterns, and differentiate it with re‐engineering. Atomics for C++ (Detlef Vollmann) 90 mins C++0x will (quite probably) define "components for fine‐grained atomic access". This is one more mechanism to deal with concurrency in C++ programs, and it's considered a mechanism "for experts only". Of course every decent C++ programmer considers himself an expert in concurrent programming, so they might consider to use these atomic objects and their operations. But there's a reason why these components are considered "expert‐level". Their use can have some pitfalls, they might not be as atomic as a naive user might expect, and they might generally not do what a user expects from them. This talk will present the C++ atomics and what niche in programming for concurrency they actually fill. Some examples on how to use them will be explained, and the talk discusses what programmers can expect from atomics and what not. Intended audience: This talk is for programmers and designers of projects that have to deal with concurrency and who consider using atomics. A good working knowledge of ISO C++ is helpful, but not required. Automated Testing of a Medical Imaging Application (Jeff Kotula) 90 mins Virtual Radiologic Corporation (http://www.virtualrad.com) is a provider of 24/7/365 teleradiology service for thousands of clients throughout the United States, associated with numerous radiologists in the US and overseas. Several years ago we began a project to write our own radiology PACS (Picture Archiving and Communications System) application to ACCU Conference 2010 April 14‐17, 2010. Barcelo Oxford Hotel, Oxford, UK 3 of 30 support and grow our core business. A key component of this system is an application used by radiologists to review medical images (e.g.
Recommended publications
  • Diabetes Care Diagnostics Diagnostics Diagnostics (RDC) (RPD) (RMD) (RTD)
    Committed to innovation and growth Roland Diggelmann, COO Roche Diagnostics UBS Best of Switzerland, Wolfsberg September 19, 2013 HY 2013 Group Results Diagnostics Overview & Strategy HY 2013 Companion Diagnostics Outlook HY 2013: Roche Group highlights HY 2013 performance • Strong Pharma performance, driven by US; solid growth for Diagnostics • 12% core EPS growth1, driven largely by strong underlying business • Solid operating free cash flow (+4%1) Innovation • Move into phase III: Bcl2 inhibitor and anti-PDL1 • Data read-outs for potential phase III decisions: etrolizumab and anti-factor D • Positive CHMP recommendation for Herceptin SC • Discontinued: aleglitazar and GA201 3 1 CER=Constant Exchange Rates HY 2013: Strong sales momentum continues HY 2013 HY 2012 Change in % CHF bn CHF bn CHF CER Pharmaceuticals Division 18.2 17.4 4 6 Diagnostics Division 5.1 5.0 2 3 Roche Group 23.3 22.4 4 5 4 CER=Constant Exchange Rates HY 2013 Group Results Diagnostics Overview & Strategy HY 2013 Companion Diagnostics Outlook In-Vitro Diagnostics market overview Large and growing market; Roche is market leader Market share Market size USD 50 bn Roche Professional Diagnostics 20% Others 39% Molecular Diagnostics 11% Abbott Tissue Diagnostics 10% 3% Siemens Diabetes Monitoring Biomerieux 8% 8% Danaher J&J 6 Source: Roche Analysis, Company reports for 2012 validated by an independent IVD consultancy Overview of Roche Diagnostics New reporting structure In Vitro Diagnostics & Life Sciences Professional Molecular Tissue Diabetes Care Diagnostics Diagnostics
    [Show full text]
  • Notes on Functional Programming with Haskell
    Notes on Functional Programming with Haskell H. Conrad Cunningham [email protected] Multiparadigm Software Architecture Group Department of Computer and Information Science University of Mississippi 201 Weir Hall University, Mississippi 38677 USA Fall Semester 2014 Copyright c 1994, 1995, 1997, 2003, 2007, 2010, 2014 by H. Conrad Cunningham Permission to copy and use this document for educational or research purposes of a non-commercial nature is hereby granted provided that this copyright notice is retained on all copies. All other rights are reserved by the author. H. Conrad Cunningham, D.Sc. Professor and Chair Department of Computer and Information Science University of Mississippi 201 Weir Hall University, Mississippi 38677 USA [email protected] PREFACE TO 1995 EDITION I wrote this set of lecture notes for use in the course Functional Programming (CSCI 555) that I teach in the Department of Computer and Information Science at the Uni- versity of Mississippi. The course is open to advanced undergraduates and beginning graduate students. The first version of these notes were written as a part of my preparation for the fall semester 1993 offering of the course. This version reflects some restructuring and revision done for the fall 1994 offering of the course|or after completion of the class. For these classes, I used the following resources: Textbook { Richard Bird and Philip Wadler. Introduction to Functional Program- ming, Prentice Hall International, 1988 [2]. These notes more or less cover the material from chapters 1 through 6 plus selected material from chapters 7 through 9. Software { Gofer interpreter version 2.30 (2.28 in 1993) written by Mark P.
    [Show full text]
  • 2.19 Historical Perspective and Further Reading 2.19
    2.19 Historical Perspective and Further Reading 2.19 This section surveys the history of instruction set architraves over time, and we give a short history of programming languages and compilers. ISAs include accu- mulator architectures, general-purpose register architectures, stack architectures, and a brief history of the IA-32. We also review the controversial subjects of high- level-language computer architectures and reduced instruction set computer architectures. The history of programming languages includes Fortran, Lisp, Algol, C, Cobol, Pascal, Simula, Smalltalk, C++, and Java, and the history of com- pilers includes the key milestones and the pioneers who achieved them. Accumulator Architectures accumulator:Archaic term for register. On-line use of it Hardware was precious in the earliest stored-program computers. Consequently, as a synonym for “register” is computer pioneers could not afford the number of registers found in today’s a fairly reliable indication machines. In fact, these machines had a single register for arithmetic instructions. that the user has been Since all operations would accumulate in a single register, it was called the accu- around quite a while. mulator, and this style of instruction set is given the same name. For example, EDSAC in 1949 had a single accumulator. Eric Raymond, The New The three-operand format of MIPS suggests that a single register is at least two Hacker’s Dictionary, 1991 registers shy of our needs. Having the accumulator as both a source operand and as the destination of the operation fills part of the shortfall, but it still leaves us one operand short. That final operand is found in memory.
    [Show full text]
  • Is Functional Programming (FP) for Me?
    Is Functional Programming (FP) for me? ACCU Conference 2008 Hubert Matthews [email protected] Overview of talk • History of computing • Types of problem, developers, solution, environments, managers • Pros and cons of FP • Comparison of FP to other choices – Success stories – Where traditional still wins • FP language v. FP style April 2008 Copyright © 2008 Hubert Matthews 2 History • Three strands in computing (1950s) – FORTRAN - numeric calculations – COBOL - state, process and I/O – LISP - symbolic calculations, AI • These strands still exist – FORTRAN - still numerics, procedural – COBOL -> structured prog -> OO – LISP -> functional, higher-level langs • These problem types still exist April 2008 Copyright © 2008 Hubert Matthews 3 Models of problem Numeric Mathematics Symbolic/algorithmic Functional State UML class Process UML statechart UML activity diagram I/O Pre/postconditions • Analysis models (not solution) – Describing the problem • Some fit a functional description, some don’t April 2008 Copyright © 2008 Hubert Matthews 4 Type of developers • Scientist turned developer • Mathematician turned developer • Developer from OO world • Novice • Keen to learn v. “old dog” • Comfort level of change • Human side of change – Change needs planning and selling April 2008 Copyright © 2008 Hubert Matthews 5 Mapping solution to problem Real world Solution space LISP Haskell Ocaml XSLT Prolog mapping ruby perl python business OO C++ Java problem C# Smalltalk FORTRAN C decomposition assembler April 2008 Copyright © 2008 Hubert Matthews 6 Levels
    [Show full text]
  • Overload Journal
    A ower Language Nee s Power Tools Smart editor Reliable with full language support refactorings Support for C++03/C++ll, Rename, Extract Function -:(r):- Boost andlibc++,C++ 7 Constant/ Variable, templates and macros. Change8ignature, & more Code generation Profound and navigation code analysis Generate menu, On-the-f y, analysis Find context usages, with Gluick-fixes& dozens 0 Go to Symbol, and more ofsmart checks GET A C++ DEVELOPMENT,:rOOL THAT YOU DESERV ReSharper C++ AppCode CLion Visual Studio Extension IDE for iOS Cross-platform IDE for C•• developers and OS X development for C and C•• developers Start a free 30-day trial jb.gg/cpp-accu Find out more at www.qbssoftware.com QBS SOFTWARE OVERLOAD CONTENTS OVERLOAD 160 December 2020 Overload is a publication of the ACCU ISSN 1354-3172 For details of the ACCU, our publications Editor and activities, visit the ACCU website: Frances Buontempo [email protected] www.accu.org Advisors Ben Curry [email protected] Mikael Kilpeläinen [email protected] 4 Questions on the Form of Software Steve Love Lucian Radu Teodorescu considers whether the [email protected] difficulties in writing software are rooted in the Chris Oldwood essence of development. [email protected] Roger Orr 8 Building g++ from the [email protected] Balog Pal GCC Modules Branch [email protected] Roger Orr demonstrates how to get a compiler that Tor Arve Stangeland supports modules up and running. [email protected] Anthony Williams 10 Consuming the uk-covid19 API [email protected] Donald Hernik demonstrates how to wrangle data Advertising enquiries out of the UK API.
    [Show full text]
  • The A-Z of Programming Languages (Interviews with Programming Language Creators)
    The A-Z of Programming Languages (interviews with programming language creators) Computerworld, 2008-20101 Ada: S. Tucker Taft ...................................................... 1 Arduino: Tom Igoe ...................................................... 5 ASP: Microsoft .......................................................... 9 AWK: Alfred Aho ....................................................... 11 AWK & AMPL: Brian Kernighan ....................................... 15 Bash: Chet Ramey....................................................... 17 C#: Anders Hejlsberg.................................................... 20 C++: Bjarne Stroustrup ................................................. 27 Clojure: Rich Hickey .................................................... 35 ColdFusion: Jeremy Allaire .............................................. 38 D: Walter Bright ......................................................... 41 Erlang: Joe Armstrong................................................... 44 F#: Don Syme .......................................................... 48 Falcon: Giancarlo Niccolai ............................................... 51 Forth: Charles Moore .................................................... 59 Groovy: Guillaume Laforge .............................................. 61 Haskell: Simon Peyton-Jones............................................. 65 INTERCAL: Don Wood................................................. 76 JavaScript: Brendan Eich................................................ 79 Lua: Roberto Ierusalimschy..............................................
    [Show full text]
  • Machine Translation from Natural Language to Code Using Long-Short Term Memory
    Machine Translation from Natural Language to Code using Long-Short Term Memory K.M. Tahsin Hassan Rahit1∗, Rashidul Hasan Nabil2, and Md Hasibul Huq3 1 Institute of Computer Science, Bangladesh Atomic Energy Commission, Dhaka, Bangladesh *current - Department of Bio-chemistry & Molecular Biology, University of Calgary, Calgary, Alberta, Canada [email protected] 2 Department of Computer Science, American International University-Bangladesh, Dhaka, Bangladesh Department of Computer Science & Engineering, City University, Dhaka, Bangladesh [email protected] 3 Department of Computer Science and Software Engineering, Concordia University, Montreal, Quebec, Canada [email protected] Abstract. Making computer programming language more understand- able and easy for the human is a longstanding problem. From assembly language to present day's object-oriented programming, concepts came to make programming easier so that a programmer can focus on the logic and the architecture rather than the code and language itself. To go a step further in this journey of removing human-computer language barrier, this paper proposes machine learning approach using Recurrent Neural Network(RNN) and Long-Short Term Memory(LSTM) to con- vert human language into programming language code. The programmer will write expressions for codes in layman's language, and the machine learning model will translate it to the targeted programming language. The proposed approach yields result with 74.40% accuracy. This can be further improved by incorporating additional techniques, which are also discussed in this paper. arXiv:1910.11471v1 [cs.CL] 25 Oct 2019 Keywords: Text to code, machine learning, machine translation, NLP, RNN, LSTM 1 Introduction Removing computer-human language barrier is an inevitable advancement re- searchers are thriving to achieve for decades.
    [Show full text]
  • PROGRAMME HEADLINE 2021 SPONSOR CONFERENCE Bloomberg Is the Leading Provider of Financial News and Information
    EVENT VIRTUAL Spring ACCU 2021.3.10–13 Pre-Conference tutorials 2021.3.9 2021 CONFERENCE PROGRAMME HEADLINE 2021 SPONSOR CONFERENCE Bloomberg is the leading provider of financial news and information. Our R&Ddepartment consists of 3000 engineers working across WELCOME teams in both London and New York. Terminal is the primary product we are known We are technology people – when we write for – it used to run on custom hardware, but code, we like to understand exactly what the is now a piece of software that runs on a PC – hardware is doing. We live and breathe C++, typically connected to 2 or more monitors. Over and are concerned about cpu performance, 315,000 customers pay a monthly subscription optimizations, memory allocation behaviour, to access our real-time data and news, deep Welcome to ACCU 2021! as well as higher-level software engineering analytic functions and trading functionality principles such as building modular, scalable, through our custom browser. You will see many ACCU Conference is the annual conference developers. Even though the conference in reliable and debuggable code. We write a Bloomberg Terminals on most trading floors of the ACCU membership club, but open 2020 had to be cancelled because of the lot of systems ourselves, but have embraced around the world, and in the offices of influential to any and all who wish to attend. The COVID-19 pandemic, many speakers are the open source community. The Bloomberg decision-makers within financial markets. ACCU Conference has a history founded in happy to give their presentations in 2021. studying and evolving C and C++ – many of So we have our usual mix of keynotes, its members continue to have active roles sessions, quickies and lightning talks.
    [Show full text]
  • Matlab, Python, Julia: What to Choose in Economics?
    Computational Economics https://doi.org/10.1007/s10614-020-09983-3 Matlab, Python, Julia: What to Choose in Economics? Chase Coleman1 · Spencer Lyon1 · Lilia Maliar2 · Serguei Maliar3 Accepted: 8 April 2020 © Springer Science+Business Media, LLC, part of Springer Nature 2020 Abstract We perform a comparison of Matlab, Python and Julia as programming languages to be used for implementing global nonlinear solution techniques. We consider two popular applications: a neoclassical growth model and a new Keynesian model. The goal of our analysis is twofold: First, it is aimed at helping researchers in econom- ics choose the programming language that is best suited to their applications and, if needed, help them transit from one programming language to another. Second, our collections of routines can be viewed as a toolbox with a special emphasis on techniques for dealing with high dimensional economic problems. We provide the routines in the three languages for constructing random and quasi-random grids, low-cost monomial integration, various global solution methods, routines for check- ing the accuracy of the solutions as well as examples of parallelization. Our global solution methods are not only accurate but also fast. Solving a new Keynesian model with eight state variables only takes a few seconds, even in the presence of an active zero lower bound on nominal interest rates. This speed is important because it allows the model to be solved repeatedly as would be required for estimation. Keywords Toolkit · Dynamic model · New Keynesian model · Global nonlinear · Low discrepancy · Quasi Monte Carlo Electronic supplementary material The online version of this article (https ://doi.org/10.1007/s1061 4-020-09983 -3) contains supplementary material, which is available to authorized users.
    [Show full text]
  • Programming Language Evolution
    UCAM-CL-TR-902 Technical Report ISSN 1476-2986 Number 902 Computer Laboratory Programming language evolution Raoul-Gabriel Urma February 2017 15 JJ Thomson Avenue Cambridge CB3 0FD United Kingdom phone +44 1223 763500 http://www.cl.cam.ac.uk/ c 2017 Raoul-Gabriel Urma This technical report is based on a dissertation submitted September 2015 by the author for the degree of Doctor of Philosophy to the University of Cambridge, Hughes Hall. Technical reports published by the University of Cambridge Computer Laboratory are freely available via the Internet: http://www.cl.cam.ac.uk/techreports/ ISSN 1476-2986 Abstract Programming languages are the way developers communicate with computers|just like natural languages let us communicate with one another. In both cases multiple languages have evolved. However, the programming language ecosystem changes at a much higher rate compared to natural languages. In fact, programming languages need to constantly evolve in response to user needs, hardware advances and research developments or they are otherwise displaced by newcomers. As a result, existing code written by developers may stop working with a newer language version. Consequently, developers need to search (analyse) and replace (refactor) code in their code bases to support new language versions. Traditionally, tools have focused on the replace aspect (refactoring) to support de- velopers evolving their code bases. This dissertation argues that developers also need machine support focused on the search aspect. This dissertation starts by characterising factors driving programming language evolu- tion based on external versus internal forces. Next, it introduces a classification of changes introduced by language designers that affect developers.
    [Show full text]
  • Programming in Python 3
    Programming in Python 3 A Complete Introduction to the Python Language Second Edition Mark Summerfield Upper Saddle River, NJ · Boston · Indianapolis · San Francisco New York · Toronto · Montreal · London · Munich · Paris · Madrid Capetown · Sydney · Tokyo · Singapore · Mexico City Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers and content particular to your business, training goals, marketing focus, and branding interests. For more information, please contact: U.S. Corporate and Government Sales (800) 382-3419 [email protected] For sales outside the United States, please contact: International Sales [email protected] Visit us on the Web: informit.com/aw Library of Congress Cataloging-in-Publication Data Summerfield, Mark. Programming in Python 3 : a complete introduction to the Python language / Mark Summerfield.—2nd ed. p. cm. Includes bibliographical references and index. ISBN 978-0-321-68056-3 (pbk. : alk. paper) 1. Python (Computer program language) 2.
    [Show full text]
  • The Java™ Language Specification Third Edition the Java™ Series
    The Java™ Language Specification Third Edition The Java™ Series The Java™ Programming Language Ken Arnold, James Gosling and David Holmes ISBN 0-201-70433-1 The Java™ Language Specification Third Edition James Gosling, Bill Joy, Guy Steele and Gilad Bracha ISBN 0-321-24678-0 The Java™ Virtual Machine Specification Second Edition Tim Lindholm and Frank Yellin ISBN 0-201-43294-3 The Java™ Application Programming Interface, Volume 1: Core Packages James Gosling, Frank Yellin, and the Java Team ISBN 0-201-63452-X The Java™ Application Programming Interface, Volume 2: Window Toolkit and Applets James Gosling, Frank Yellin, and the Java Team ISBN 0-201-63459-7 The Java™ Tutorial: Object-Oriented Programming for the Internet Mary Campione and Kathy Walrath ISBN 0-201-63454-6 The Java™ Class Libraries: An Annotated Reference Patrick Chan and Rosanna Lee ISBN 0-201-63458-9 The Java™ FAQ: Frequently Asked Questions Jonni Kanerva ISBN 0-201-63456-2 The Java™ Language Specification Third Edition James Gosling Bill Joy Guy Steele Gilad Bracha ADDISON-WESLEY Boston ● San Francisco ● New York ● Toronto ● Montreal London ● Munich ● Paris ● Madrid Capetown ● Sydney ● Tokyo ● Singapore ● Mexico City The Java Language Specification iv Copyright 1996-2005 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, California 95054 U.S.A. All rights reserved. Duke logo™ designed by Joe Palrang. RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the United States Government is subject to the restrictions set forth in DFARS 252.227-7013 (c)(1)(ii) and FAR 52.227-19. The release described in this manual may be protected by one or more U.S.
    [Show full text]