Joshua Bloch

Last updated
Joshua J. Bloch
Joshuabloch.jpg
Bloch in 2008
Born (1961-08-28) August 28, 1961 (age 62)
Nationality American
Alma mater Columbia University (B.S.)
Carnegie Mellon University (Ph.D.)
Scientific career
InstitutionsCarnegie Mellon University
Doctoral advisor Alfred Spector

Joshua J. Bloch (born August 28, 1961) is an American software engineer and a technology author.

Contents

He led the design and implementation of numerous Java platform features, including the Java Collections Framework, the java.math package, and the assert mechanism. [1] He is the author of the programming guide Effective Java (2001), which won the 2001 Jolt Award, [2] and is a co-author of two other Java books, Java Puzzlers (2005) and Java Concurrency In Practice (2006).

Bloch holds a B.S. in computer science from Columbia University's School of Engineering and Applied Science and a Ph.D. in computer science from Carnegie Mellon University. [1] His 1990 thesis was titled A Practical Approach to Replication of Abstract Data Objects [3] and was nominated for the ACM Distinguished Doctoral Dissertation Award. [4]

Bloch has worked as a Senior Systems Designer at Transarc, and later as a Distinguished Engineer at Sun Microsystems. In June 2004, he left Sun and became Chief Java Architect at Google. [5] On August 3, 2012, Bloch announced that he would be leaving Google. [6]

In December 2004, Java Developer's Journal included Bloch in its list of the "Top 40 Software People in the World". [7]

Bloch has proposed the extension of the Java programming language with two features: Concise Instance Creation Expressions (CICE) (coproposed with Bob Lee and Doug Lea) and Automatic Resource Management (ARM) blocks. The combination of CICE and ARM formed one of the three early proposals for adding support for closures to Java. [8] ARM blocks were added to the language in JDK7. [9]

As of February 2024, Bloch is listed as Professor of practice of the Software and Societal Systems Department at Carnegie Mellon University. [10]

Bibliography

Related Research Articles

<span class="mw-page-title-main">Java (programming language)</span> Object-oriented programming language

Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need to recompile. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages.

<span class="mw-page-title-main">James Gosling</span> Canadian computer scientist

James Gosling is a Canadian computer scientist, best known as the founder and lead designer behind the Java programming language.

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

In software systems, encapsulation refers to the bundling of data with the mechanisms or methods that operate on the data. It may also refer to the limiting of direct access to some of that data, such as an object's components. Essentially, encapsulation prevents external code from being concerned with the internal workings of an object.

<span class="mw-page-title-main">Carnegie Mellon School of Computer Science</span> School for computer science in the United States

The School of Computer Science (SCS) at Carnegie Mellon University in Pittsburgh, Pennsylvania, US is a school for computer science established in 1988. It has been consistently ranked among the top computer science programs over the decades. As of 2022 U.S. News & World Report ranks the graduate program as tied for second with Stanford University and University of California, Berkeley. It is ranked second in the United States on Computer Science Open Rankings, which combines scores from multiple independent rankings.

<span class="mw-page-title-main">Guy L. Steele Jr.</span> American computer scientist (born 1954)

Guy Lewis Steele Jr. is an American computer scientist who has played an important role in designing and documenting several computer programming languages and technical standards.

The marker interface pattern is a design pattern in computer science, used with languages that provide run-time type information about objects. It provides a means to associate metadata with a class where the language does not have explicit support for such metadata.

<span class="mw-page-title-main">Philip Wadler</span> American computer scientist

Philip Lee Wadler is a UK-based American computer scientist known for his contributions to programming language design and type theory. He is the chair of theoretical computer science at the Laboratory for Foundations of Computer Science at the School of Informatics, University of Edinburgh. He has contributed to the theory behind functional programming and the use of monads; and the designs of the purely functional language Haskell and the XQuery declarative query language. In 1984, he created the Orwell language. Wadler was involved in adding generic types to Java 5.0. He is also author of "Theorems for free!", a paper that gave rise to much research on functional language optimization.

<span class="mw-page-title-main">Alice (software)</span>

Alice is an object-based educational programming language with an integrated development environment (IDE). Alice uses a drag and drop environment to create computer animations using 3D models. The software was developed first at University of Virginia in 1994, then Carnegie Mellon, by a research group led by Randy Pausch.

Douglas S. Lea is a professor of computer science and current head of the computer science department at State University of New York at Oswego, where he specializes in concurrent programming and the design of concurrent data structures. He was on the Executive Committee of the Java Community Process and chaired JSR 166, which added concurrency utilities to the Java programming language. On October 22, 2010, Doug Lea notified the Java Community Process Executive Committee he would not stand for reelection. Lea was re-elected as an at-large member for the 2012 OpenJDK governing board.

<span class="mw-page-title-main">Java (software platform)</span> Set of computer software and specifications

Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.

The Java programming language and Java software platform have been criticized for design choices including the implementation of generics, forced object-oriented programming, the handling of unsigned numbers, the implementation of floating-point arithmetic, and a history of security vulnerabilities in the primary Java VM implementation, HotSpot. Software written in Java, especially its early versions, has been criticized for its performance compared to software written in other programming languages. Developers have also remarked that differences in various Java implementations must be taken into account when writing complex Java programs that must work with all of them.

<span class="mw-page-title-main">Robert C. Seacord</span> American computer security expert

Robert C. Seacord is an American computer security specialist and writer. He is the author of books on computer security, legacy system modernization, and component-based software engineering.

<span class="mw-page-title-main">Greenfoot</span>

Greenfoot is an integrated development environment using Java or Stride designed primarily for educational purposes at the high school and undergraduate level. It allows easy development of two-dimensional graphical applications, such as simulations and interactive games.

The Java programming language and the Java virtual machine (JVM) is designed to support concurrent programming. All execution takes place in the context of threads. Objects and resources can be accessed by many separate threads. Each thread has its own path of execution, but can potentially access any object in the program. The programmer must ensure read and write access to objects is properly coordinated between threads. Thread synchronization ensures that objects are modified by only one thread at a time and prevents threads from accessing partially updated objects during modification by another thread. The Java language has built-in constructs to support this coordination.

<span class="mw-page-title-main">Mary Shaw (computer scientist)</span> American software engineer

Mary Shaw is an American software engineer, and the Alan J. Perlis Professor of Computer Science in the School of Computer Science at Carnegie Mellon University, known for her work in the field of software architecture.

James George Mitchell is a Canadian computer scientist. He has worked on programming language design and implementation, interactive programming systems, dynamic interpreting and compiling, document preparing systems, user interface design, distributed transactional file systems, and distributed, object-oriented operating systems. He has also worked on the design of hardware for computer graphics, high-level programming language execution, and audio input/output.

<span class="mw-page-title-main">Gilad Bracha</span> American software engineer

Gilad Bracha is a software engineer at F5 Networks, and formerly at Google, where he was on the Dart programming language team. He is creator of the Newspeak language, and co-author of the second and third editions of the Java Language Specification, and a major contributor to the second edition of the Java Virtual Machine Specification.

<span class="mw-page-title-main">API</span> Software interface between computer programs

An application programming interface (API) is a way for two or more computer programs or components to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation. Whereas a system's user interface dictates how its end-users interact with the system in question, its API dictates how to write code that takes advantage of that system's capabilities.

References

  1. 1 2 "About the Author", Effective Java Programming Language Guide
  2. 2002 Jolt & Productivity Award Winners Archived 2007-05-03 at the Wayback Machine . Dr. Dobb's Portal.
  3. A Practical Approach to Replication of Abstract Data Objects. Computer Science Department, School of Computer Science, Carnegie Mellon University. May 1990.
  4. Books & Authors: Effective Java, accessed 16 April 2008
  5. Heiss, Janet J. (2007). "Rock Star Josh Bloch". JavaOne. Archived from the original on 27 October 2007.
  6. Joshua Bloch, After eight years at Google, the time has come for me to move on
  7. Geelan, Jeremy (2004-12-21). "The i-Technology Right Stuff". Java Developer's Journal. Archived from the original on 2008-04-22. Retrieved 2007-03-13.
  8. Kreft, Klaus; Langer, Angelika (17 June 2008). "Understanding the closures debate". JavaWorld . Retrieved 2020-07-20.
  9. Darcy, Joseph D. (28 August 2009). "Project Coin: The Final Five (Or So)". Joseph D. Darcy's Oracle Weblog. Oracle. Archived from the original on 2009-09-01. Retrieved 14 Dec 2022.
  10. "Faculty". Institute for Software Research. Carnegie Mellon University . Retrieved 14 February 2024.