Nothing Special   »   [go: up one dir, main page]

skip to main content
Skip header Section
The Java Language Specification, Java SE 7 EditionFebruary 2013
Publisher:
  • Addison-Wesley Professional
ISBN:978-0-13-326022-9
Published:24 February 2013
Pages:
672
Skip Bibliometrics Section
Reflects downloads up to 19 Nov 2024Bibliometrics
Skip Abstract Section
Abstract

Written by the inventors of the technology, The Java Language Specification, Java SE 7 Edition, is the definitive technical reference for the Java programming language. The book provides complete, accurate, and detailed coverage of the Java programming language. It fully describes the new features added in Java SE 7, including the try-with-resources statement, multi-catch, precise rethrow, diamond syntax, strings-in-switch, and binary literals. The book also includes many explanatory notes, and carefully distinguishes the formal rules of the language from the practical behavior of compilers.

Cited By

  1. ACM
    Chaliasos S, Sotiropoulos T, Drosos G, Mitropoulos C, Mitropoulos D and Spinellis D (2021). Well-typed programs can go wrong: a study of typing-related bugs in JVM compilers, Proceedings of the ACM on Programming Languages, 5:OOPSLA, (1-30), Online publication date: 20-Oct-2021.
  2. ACM
    Martres G Pathless Scala: a calculus for the rest of Scala Proceedings of the 12th ACM SIGPLAN International Symposium on Scala, (12-21)
  3. Rahman M, Roy C and Lo D (2019). Automatic query reformulation for code search using crowdsourced knowledge, Empirical Software Engineering, 24:4, (1869-1924), Online publication date: 1-Aug-2019.
  4. Rahman M, Palani D and Rigby P Natural software revisited Proceedings of the 41st International Conference on Software Engineering, (37-48)
  5. Brás-Geraldes C, Papoila A and Xufre P (2019). Generalized additive neural network with flexible parametric link function, Neural Computing and Applications, 31:3, (719-736), Online publication date: 1-Mar-2019.
  6. Young S, Flawn M, Dueck G, Kent K and Gracie C Persistent memory storage of cold regions in the OpenJ9 Java virtual machine Proceedings of the 28th Annual International Conference on Computer Science and Software Engineering, (213-223)
  7. ACM
    Cody-Kenny B, O'Neill M and Barrett S Performance localisation Proceedings of the 4th International Workshop on Genetic Improvement Workshop, (27-34)
  8. Ulke B, Steimann F and Lämmel R Partial evaluation of OCL expressions Proceedings of the ACM/IEEE 20th International Conference on Model Driven Engineering Languages and Systems, (63-73)
  9. ACM
    Osvald L, Essertel G, Wu X, Alayón L and Rompf T (2016). Gentrification gone too far? affordable 2nd-class values for fun and (co-)effect, ACM SIGPLAN Notices, 51:10, (234-251), Online publication date: 5-Dec-2016.
  10. ACM
    Osvald L, Essertel G, Wu X, Alayón L and Rompf T Gentrification gone too far? affordable 2nd-class values for fun and (co-)effect Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, (234-251)
  11. ACM
    Sluşanschi E and Dumitrel V (2016). ADiJaC -- Automatic Differentiation of Java Classfiles, ACM Transactions on Mathematical Software, 43:2, (1-33), Online publication date: 2-Sep-2016.
  12. Richard A, Nguyen L, Shipton P, Kent K, Bierbrauer A, Nasartschuk K and Dombrowski M (2016). Inter-JVM Sharing, Software—Practice & Experience, 46:9, (1285-1296), Online publication date: 1-Sep-2016.
  13. ACM
    Yang B, Kent K, Aubanel E, Lin A and Ajila T Multi-tier Data Synchronization Based on an Optimized Concurrent Linked-list Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, (1-10)
  14. Andrade G, Carvalho W, Utsch R, Caldeira P, Alburquerque A, Ferracioli F, Rocha L, Frank M, Guedes D and Ferreira R ParallelME Proceedings of the 22nd International Conference on Euro-Par 2016: Parallel Processing - Volume 9833, (447-459)
  15. ACM
    Ernst E, Møller A, Schwarz M and Strocco F (2015). Message safety in Dart, ACM SIGPLAN Notices, 51:2, (41-53), Online publication date: 11-May-2016.
  16. Garnock-Jones T and Felleisen M Coordinated Concurrent Programming in Syndicate Proceedings of the 25th European Symposium on Programming Languages and Systems - Volume 9632, (310-336)
  17. ACM
    Afroozeh A and Izmaylova A Operator precedence for data-dependent grammars Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, (13-24)
  18. ACM
    Izmaylova A, Afroozeh A and Storm T Practical, general parser combinators Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, (1-12)
  19. ACM
    Mastrangelo L, Ponzanelli L, Mocci A, Lanza M, Hauswirth M and Nystrom N (2015). Use at your own risk: the Java unsafe API in the wild, ACM SIGPLAN Notices, 50:10, (695-710), Online publication date: 18-Dec-2015.
  20. Yang B, Kent K, Aubanel E and Taylor K A monitor-based synchronization approach for Java packed objects Proceedings of the 25th Annual International Conference on Computer Science and Software Engineering, (192-200)
  21. Patros P, Dilli D, Kent K, Dawson M and Watson T Multitenancy benefits in application servers Proceedings of the 25th Annual International Conference on Computer Science and Software Engineering, (111-118)
  22. ACM
    Mastrangelo L, Ponzanelli L, Mocci A, Lanza M, Hauswirth M and Nystrom N Use at your own risk: the Java unsafe API in the wild Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, (695-710)
  23. ACM
    Ernst E, Møller A, Schwarz M and Strocco F Message safety in Dart Proceedings of the 11th Symposium on Dynamic Languages, (41-53)
  24. ACM
    Afroozeh A and Izmaylova A One parser to rule them all 2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!), (151-170)
  25. ACM
    Xu S, Bremner D and Heidinga D Mining Method Handle Graphs for Efficient Dynamic JVM Languages Proceedings of the Principles and Practices of Programming on The Java Platform, (159-169)
  26. ACM
    Narayanaswamy G When truth is efficient: analysing concurrency Proceedings of the 2015 International Symposium on Software Testing and Analysis, (141-152)
  27. ACM
    Patros P, Aubanel E, Bremner D and Dawson M A Java util concurrent park contention tool Proceedings of the Sixth International Workshop on Programming Models and Applications for Multicores and Manycores, (106-111)
  28. ACM
    Steele G, Lea D and Flood C (2014). Fast splittable pseudorandom number generators, ACM SIGPLAN Notices, 49:10, (453-472), Online publication date: 31-Dec-2015.
  29. ACM
    Steele G, Lea D and Flood C Fast splittable pseudorandom number generators Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications, (453-472)
  30. ACM
    Geffken M and Thiemann P Side effect monitoring for Java using bytecode rewriting Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools, (87-98)
  31. Prinz A and Sherratt E Distributed ASM - Pitfalls and Solutions Proceedings of the 4th International Conference on Abstract State Machines, Alloy, B, TLA, VDM, and Z - Volume 8477, (210-215)
  32. ACM
    Lin Y, Xing Z, Xue Y, Liu Y, Peng X, Sun J and Zhao W Detecting differences across multiple instances of code clones Proceedings of the 36th International Conference on Software Engineering, (164-174)
  33. ACM
    Dyer R, Rajan H, Nguyen H and Nguyen T Mining billions of AST nodes to study actual and potential usage of Java language features Proceedings of the 36th International Conference on Software Engineering, (779-790)
  34. ACM
    Busjahn T, Bednarik R and Schulte C What influences dwell time during source code reading? Proceedings of the Symposium on Eye Tracking Research and Applications, (335-338)
  35. Elrakaiby Y, Amrani M and Traon Y Security@Runtime Proceedings of the 6th International Symposium on Engineering Secure Software and Systems - Volume 8364, (19-34)
  36. ACM
    Zhong H and Su Z (2013). Detecting API documentation errors, ACM SIGPLAN Notices, 48:10, (803-816), Online publication date: 12-Nov-2013.
  37. Santos A, Leal K and Chiroque L Building an HLA-Based Distributed Simulation Proceedings of the 2013 IEEE/ACM 17th International Symposium on Distributed Simulation and Real Time Applications, (153-160)
  38. ACM
    Zhong H and Su Z Detecting API documentation errors Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications, (803-816)
  39. ACM
    Dombrowski M, Kent K, Dawson M, Gracie C and Herpers R Dynamic monitor allocation in the Java virtual machine Proceedings of the 11th International Workshop on Java Technologies for Real-time and Embedded Systems, (30-37)
  40. ACM
    Öqvist J and Hedin G Extending the JastAdd extensible Java compiler to Java 7 Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, (147-152)
  41. ACM
    Bettini L and Damiani F Pure trait-based programming on the Java platform Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, (67-78)
  42. ACM
    Roemers A, Hatun K and Bockisch C An adapter-aware, non-intrusive dependency injection framework for Java Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, (57-66)
  43. ACM
    Black A What shall we tell the children (about inheritance)? Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance, (17-25)
  44. ACM
    Desnoyers M (2013). Proving the correctness of nonblocking data structures, Communications of the ACM, 56:7, (62-69), Online publication date: 1-Jul-2013.
  45. ACM
    Takeuchi M, Cunningham D, Grove D and Saraswat V Java interoperability in managed X10 Proceedings of the third ACM SIGPLAN X10 Workshop, (39-46)
  46. Rigby P and Robillard M Discovering essential code elements in informal documentation Proceedings of the 2013 International Conference on Software Engineering, (832-841)
  47. ACM
    Desnoyers M (2013). Proving the Correctness of Nonblocking Data Structures, Queue, 11:5, (30-43), Online publication date: 1-May-2013.
  48. ACM
    Axelsen E and Krogdahl S (2012). Package templates, ACM SIGPLAN Notices, 48:3, (50-59), Online publication date: 10-Apr-2013.
  49. ACM
    Shafiei N and Mehlitz P (2012). Modeling class loaders in Java PathFinder version 7, ACM SIGSOFT Software Engineering Notes, 37:6, (1-5), Online publication date: 27-Nov-2012.
  50. ACM
    Cossette B and Walker R Seeking the ground truth Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, (1-11)
  51. ACM
    Boehm H Position paper Proceedings of the 2012 ACM workshop on Relaxing synchronization for multicore and manycore scalability, (9-14)
  52. ACM
    Axelsen E and Krogdahl S Package templates Proceedings of the 11th International Conference on Generative Programming and Component Engineering, (50-59)
  53. te Brinke S, Laarakkers M, Bockisch C and Bergmans L An implementation mechanism for tailorable exceptional flow Proceedings of the 5th International Workshop on Exception Handling, (22-26)
Contributors
  • Sun Microsystems
  • Oracle Corporation
  • Sun Microsystems

Reviews

Marlin W Thomas

Programming languages, Java included, are like baseball. They are arbitrary symbolic systems that create their own universes of rules and actions that are only occasionally constrained by other systems. Just as the Official Rules of Major League Baseball brings baseball into existence by defining what baseball is, the Java language specification institutionalizes Java. Reviewing the Java language specification is, therefore, akin to reviewing the Official Rules. Since the specification creates Java, its nature as the definer of the language constrains the reviewer. The authority of the authors is beyond dispute because they were so instrumental in inventing and developing the language and because what they write constitutes what is Java. One can, however, discuss the quality and order of the presentation while summarizing the substance of the book and evaluating its usefulness to target audiences, and one can describe the balance that the book strikes in its treatment of such essential language features as syntax, semantics, and pragmatics. It is important to understand what the Java specification does and does not do. The book specifies a language. It does not justify the inclusion or exclusion of language features, nor does it teach the language to the uninitiated. It can be judged solely on the quality of the exposition of the specification, not the specification itself. One characteristic of the specification, though, is that it does some teaching along the way. The book does include, by way of illustrating the elements of Java, enough programs to give the reader some training in developing programs, but that is a long way from preparing readers to use Java to solve even the most trivial of problems. The specification can help the reader increase facility with the language by detailing the syntax and semantics of the language elements. The treatment of type names provides an example where both the form of type names and their meaning are treated. But, just as one learns baseball without the rulebook handy, so one learns Java programming without the specification being readily available. Two preliminary chapters open the book. The introduction briefly describes Java, outlines the topics presented, mentions conventions of notation, enumerates what the specification does not include, and concludes with a list of references. Brevity continues with a chapter on grammars that would be more helpful if it had illustrated how the grammatical notation is instantiated in programs. The next 16 chapters treat the elements and rules of Java: lexical structure; types, values, and variables; conversions and promotions; names; packages; classes; interfaces; arrays; exceptions; execution; binary compatibility; blocks and statements; expressions; definite assignment; threads and locks; and syntax. The order of the material is not conceptually sequential. Placing chapters on blocks and statements, expressions, and assignment near the end is questionable because a more reasonable order, based on how programs are composed and how programmers learn, would be for the specification to mimic the narrative of program creation and debugging. The order realized in the specification is abstract and not connected closely enough to human comprehension. The individual chapters, however, are clearly expressed and developed logically with attentiveness to completeness. The chapter on arrays illustrates the strengths of the treatment of the subject. It starts with a narrative definition of arrays and their characteristics, and then proceeds to detail them exhaustively through their grammar. The power of the presentation resides both in the grammar and in the examples that illustrate that grammar. The examples enable the chapter to complement the abstract with the concrete. Of particular usefulness here, as well as throughout the specification, is the inclusion of conditions that lead to errors. One useful service that the specification provides is that it helps programmers understand and then fix errors in code. A useful index item would be an exhaustive list of exceptions and the pages where they are explained. As it stands, the exceptions and errors are embedded in the narrative. Chapter 18 concludes with a grammar for the Java language that, as the authors state, is better suited for implementation than the grammar presented piecemeal in the preceding chapters. This book speaks to several audiences without distorting its voice and unity of purpose: programmers seeking a definitive, authoritative understanding of Java language features; language developers looking for a model of exposition and for suites of features to incorporate; and advanced students learning the intricacies of the language. It focuses on the syntax and semantics of Java, but in providing and explaining details of program code, it treats implementation as well. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Please enable JavaScript to view thecomments powered by Disqus.

Recommendations