The document summarizes a presentation on Oracle v. Google regarding copyright protection of APIs. It discusses the Java and Android APIs, key issues in the case, and fundamental legal principles guiding the court's decision. The court found that the Java API is not copyrightable as copyright law does not protect ideas, processes, or functional elements essential for interoperability. It also noted short phrases and names are not copyrightable.
Oracle v. Google: Deciphering the district court’s decision of no copyright p...Marc Hubbard
An explanation of the district court's holding in Oracle v. Google that the Google's implementation in Android of a portion of the Java API specification did not infringe the copyright in Sun's/Oracle's implementation because the API was not copyrightable
Legal Protection of APIs – Oracle vs. GoogleNordic APIs
This is a session given by Siri Mårtensson at Nordic APIs 2016 Platform Summit on October 26th, in Stockholm Sweden.
Description:
The case Oracle America Inc. vs. Google Inc. has been subject for a number of trials in the US courts and involves a number of questions regarding legal protection of APIs. One of the central issues was whether the “structure, sequence and organization” of an API was copyrightable and it was concluded by the appeals court that Oracles API was protected by copyright. However, in the latest ruling from May 26 2016, the jury found that Android did not infringe the Oracle-owned copyrights since Android’s use was protected by the exception of “fair use”. In Europe the starting point is that software and API:s are protected by copyright. However, there are also in Europe a number of exceptions to the scope of protection.
Siri Mårtensson, Delphi Law firm, a lawyer and expert in IT- and Intellectual Property Law gives you an introduction to how APIs can be legally protected.
Java is a programming language and platform that allows developers to write programs once and run them anywhere. The document discusses Java's history, features, and provides examples of Java code. It defines Java as a simple, secure, platform-independent language and describes how to write a basic "Hello World" Java program. It also explains how to set the path variable so Java tools like javac and java can be run from any directory.
Oracle sued Google over its use of Java in the Android operating system. Google acquired Android Inc. in 2005 to develop a mobile software platform and decided to build Android using Java technology to meet its requirements. However, Google did not want to share control with Sun Microsystems, which owned Java. So Google released Android without properly licensing Java, which Oracle later acquired from Sun. The lawsuit centers on whether Google infringed on Oracle's copyrights and patents related to Java by its use of Java APIs and class libraries in Android without a license.
The document discusses procedural programming versus object-oriented programming and provides examples using Java. It defines procedural programming as dividing a program into subprocedures that perform specific tasks, with most data shared globally. Object-oriented programming is defined as partitioning memory for both data and functions using objects. The document then outlines key concepts of OOP like objects, classes, encapsulation, and polymorphism. It provides history on the development of Java and its advantages over C++ as a simpler, safer, and more robust language.
MVC 1.0 is an action-oriented framework building on experience with previous frameworks such as Struts, Spring MVC, VRaptor etc. It is based on JAX-RS, CDI and BeanValidation JavaEE technologies and provides a standard, view specification neutral way to build web applications. Among supported view template frameworks are: JSP, Facelets, Freemarker, Handlebars, Jade, Mustache, Velocity, Thymeleaf, etc.
NOTE: MVC 1.0 JavaEE 8 API Specification is in early draft stage, and is subject to change based on open community process.
This document provides a tentative claim construction order for terms in patents related to improvements in the Java technology platform. The order summarizes the Java platform and object-oriented programming concepts as technological background. It then construes the term "duplicated elements" in claims of one patent to mean "multiple elements in different class files that are identical" based on the intrinsic evidence from the specification and claims. The order requests the parties submit a focused critique of claim construction concerns.
Interoperability and Its Role In Standardization, Plus A ResourceSync OverviewPeter Murray
This document summarizes Peter Murray's presentation on interoperability and its role in standardization. The presentation covered four levels of interoperability: technical, syntactic, semantic, and organizational. It also discussed the ResourceSync specification, which provides a framework for synchronizing web resources between a source and destination using sitemaps. The specification builds on existing sitemap standards and is currently in beta with the goal of finalizing version 1.0 in fall 2013. Implementation tools are being developed and public feedback is being solicited to improve the specification.
Oracle v. Google: Deciphering the district court’s decision of no copyright p...Marc Hubbard
An explanation of the district court's holding in Oracle v. Google that the Google's implementation in Android of a portion of the Java API specification did not infringe the copyright in Sun's/Oracle's implementation because the API was not copyrightable
Legal Protection of APIs – Oracle vs. GoogleNordic APIs
This is a session given by Siri Mårtensson at Nordic APIs 2016 Platform Summit on October 26th, in Stockholm Sweden.
Description:
The case Oracle America Inc. vs. Google Inc. has been subject for a number of trials in the US courts and involves a number of questions regarding legal protection of APIs. One of the central issues was whether the “structure, sequence and organization” of an API was copyrightable and it was concluded by the appeals court that Oracles API was protected by copyright. However, in the latest ruling from May 26 2016, the jury found that Android did not infringe the Oracle-owned copyrights since Android’s use was protected by the exception of “fair use”. In Europe the starting point is that software and API:s are protected by copyright. However, there are also in Europe a number of exceptions to the scope of protection.
Siri Mårtensson, Delphi Law firm, a lawyer and expert in IT- and Intellectual Property Law gives you an introduction to how APIs can be legally protected.
Java is a programming language and platform that allows developers to write programs once and run them anywhere. The document discusses Java's history, features, and provides examples of Java code. It defines Java as a simple, secure, platform-independent language and describes how to write a basic "Hello World" Java program. It also explains how to set the path variable so Java tools like javac and java can be run from any directory.
Oracle sued Google over its use of Java in the Android operating system. Google acquired Android Inc. in 2005 to develop a mobile software platform and decided to build Android using Java technology to meet its requirements. However, Google did not want to share control with Sun Microsystems, which owned Java. So Google released Android without properly licensing Java, which Oracle later acquired from Sun. The lawsuit centers on whether Google infringed on Oracle's copyrights and patents related to Java by its use of Java APIs and class libraries in Android without a license.
The document discusses procedural programming versus object-oriented programming and provides examples using Java. It defines procedural programming as dividing a program into subprocedures that perform specific tasks, with most data shared globally. Object-oriented programming is defined as partitioning memory for both data and functions using objects. The document then outlines key concepts of OOP like objects, classes, encapsulation, and polymorphism. It provides history on the development of Java and its advantages over C++ as a simpler, safer, and more robust language.
MVC 1.0 is an action-oriented framework building on experience with previous frameworks such as Struts, Spring MVC, VRaptor etc. It is based on JAX-RS, CDI and BeanValidation JavaEE technologies and provides a standard, view specification neutral way to build web applications. Among supported view template frameworks are: JSP, Facelets, Freemarker, Handlebars, Jade, Mustache, Velocity, Thymeleaf, etc.
NOTE: MVC 1.0 JavaEE 8 API Specification is in early draft stage, and is subject to change based on open community process.
This document provides a tentative claim construction order for terms in patents related to improvements in the Java technology platform. The order summarizes the Java platform and object-oriented programming concepts as technological background. It then construes the term "duplicated elements" in claims of one patent to mean "multiple elements in different class files that are identical" based on the intrinsic evidence from the specification and claims. The order requests the parties submit a focused critique of claim construction concerns.
Interoperability and Its Role In Standardization, Plus A ResourceSync OverviewPeter Murray
This document summarizes Peter Murray's presentation on interoperability and its role in standardization. The presentation covered four levels of interoperability: technical, syntactic, semantic, and organizational. It also discussed the ResourceSync specification, which provides a framework for synchronizing web resources between a source and destination using sitemaps. The specification builds on existing sitemap standards and is currently in beta with the goal of finalizing version 1.0 in fall 2013. Implementation tools are being developed and public feedback is being solicited to improve the specification.
The document discusses cloud interoperability and standards. It defines interoperability as the ability of cloud systems to exchange data and information. This allows applications and workloads to seamlessly move between cloud platforms. The document outlines motivations for interoperability such as customer choice, competition, and innovation. It also discusses functional scope, policy objectives, use cases, and enabling user access across clouds through standards.
Cloud Lock-in vs. Cloud Interoperability - Indicthreads cloud computing conf...IndicThreads
Session presented at the 2nd IndicThreads.com Conference on Cloud Computing held in Pune, India on 3-4 June 2011.
http://CloudComputing.IndicThreads.com
Abstract:As the cloud adoption increases, there is a growing concern about the lock-in of customers into the various cloud platforms. This session will discuss various major cloud platforms, the type of lock-in the customer will face in each of these platforms and what each customer can do to minimize their lock-in.
Key takeaways for audience are:
Understand what is cloud lock-in
Types of cloud vendor lock-ins
What is cloud interoperability
Major initiatives around cloud interoperability standards
Goals, differences and players/proponents of these major standards
Steps to minimize cloud lock-in for your customers
Speaker: Ashwin Waknis is a Sr. IT professional with 15 years in the industry. Ashwin is currently head of the Cloud Professional Services Business at Persistent Systems. Before that Ashwin was a Sr. Product Manager at Cisco Systems where he lead major initiatives around Knowledge Management, Enterprise Portal, Web 2.0/Social softwares and Enterprise Search. For the last 2 years, Ashwin has been involved in Cloud Computing initiatives first at Cisco and then at Persistent Systems.Ashwin has spoken at many customer workshops and events organized for educational institutes.
Architecture and Practices on Cloud Interoperability and PortabilityThomas Lee
Cloud computing is believed to be another big wave of Internet technology after World Wide Web and mobile computing. The Open Group has identified cloud computing as a major driver to develop global GDP. In Hong Kong, the Office of Government CIO (OGCIO) has established the Expert Group on Cloud Computing Services and Standards (EGCCSS) to drive cloud computing adoption and deployment. Various cloud technical committees, including the two groups mentioned above, have identified the interoperability and portability of cloud services as a key principle for stimulating and driving economic benefits. EGCCSS has formed a Working Group Cloud Computing Interoperability Standards (WGCCIS) specifically to address this challenge.
In this talk, Dr Thomas Lee shares his experience in working in WGCCIS as a co-opt member and introduces the Open Group Guide on Cloud Computing Portability and Interoperability. He explains the fundamental concepts of cloud interoperability and portability and the reference architecture to design interoperable interfaces between on-premise and cloud application components. He also discusses the architectural principles for supporting cloud service providers to develop interoperable cloud services. From the enterprise user perspective, he also summarizes some good practices from the Open Group Guide that help cloud consumers to formulate their cloud strategy to manage vendor lock-in when selecting cloud services.
This document discusses using an Enterprise Service Bus (ESB) architecture as an interoperability and resource sharing platform in the cloud. It describes the need for cloud interoperability and discusses current challenges and efforts related to data/semantic interoperability and customer lock-in. The document proposes using a service bus with light-weight bindings to provide location decoupling and integration of applications and platforms across different cloud providers in a standardized way. Key aspects of the proposed architecture include a virtualization layer, service repository/registry, and composable middleware.
This presentation will help you all a lot.
because this is not from a particular text book or a reference guide it is a collection of several web sites.
The document provides an overview of the Java programming language, including its history, core concepts, and execution process. Some key points:
- Java was created in 1991 by James Gosling at Sun Microsystems with an initial focus on embedded systems, but later expanded to web applications due to the rise of the Internet.
- The Java platform consists of the Java programming language, Java Virtual Machine (JVM), and Java Application Programming Interfaces (APIs). The JVM allows Java programs to run on any hardware/software platform.
- A Java program is compiled into bytecode that can be executed by any JVM, providing platform independence. The execution involves compiling the source code and then interpreting the bytecode on
This document provides an introduction to programming in Java. It discusses key Java concepts like object-oriented programming, classes, objects, and encapsulation. It explains that Java code is compiled to bytecode that runs on a virtual machine, making Java portable across platforms. The document also gives an overview of Java features and components like the Java Development Kit tools, APIs, and libraries. It provides examples of simple Java programs and how they are compiled and executed.
This document provides an overview of variables and their scope in Java. It discusses the three types of variables in Java: local variables, instance variables, and class (static) variables.
Local variables are declared within methods, constructors, or blocks and can only be accessed within their declaration scope. Instance variables are declared within a class but outside of methods and can be accessed using an object reference. Class variables are declared with the static keyword, belong to the class itself rather than any object, and are accessed via the class name. The document provides examples and discusses default variable initialization.
This document provides an overview of the Java programming language and platform. It discusses Java's origins, characteristics, editions, and components like the JDK, JRE, and JVM. Java is introduced as a simple, secure, robust, and platform-independent language well-suited for client-server web applications and small devices. The document outlines Java's history and evolution from 1995 to present. Key aspects of Java like object-orientation, portability, and multi-threading are summarized.
The document provides information about Java, including:
- Java is an object-oriented programming language that is platform independent and can be used to create applications for web, desktops, mobile devices, and more.
- Java was originally developed in the early 1990s by James Gosling at Sun Microsystems for use in set-top boxes, but became popular for building web applications and is now widely used.
- The Java Development Kit (JDK) includes tools like javac, java, javadoc and others needed to develop, compile, run and document Java programs, as well as class libraries and documentation. The JVM executes compiled Java code.
1) The document discusses Java concepts across 5 doses: the Java Community Process, Java characteristics, terminology, platforms, and frameworks.
2) It covers key Java characteristics like being cross-platform, using object-oriented programming, having robust and good performance, and automatic memory management.
3) Important Java terminology is defined, like the Java Virtual Machine (JVM), Java Runtime Environment (JRE), and Java Development Kit (JDK).
4) The main Java platforms - Java SE, Java ME, and Java EE - are outlined, describing their uses for general applications, limited devices, and enterprise software respectively.
5) Popular Java frameworks for testing, building, GUIs, IDE
In this session you will learn:
1. Principles of Object-Oriented Programming
2. Writing your first Java Application
3. Elements of Java programming language
4. Built in Data Types
5. Conditional Statements
6. Loops
Java is an object-oriented programming language developed by James Gosling at Sun Microsystems in 1991. It derives much of its syntax from C and C++ but is designed to have as few implementation dependencies as possible so that applications written in Java can run on any device with a Java Virtual Machine (JVM). The JVM converts Java bytecode into machine code that can be executed by the device's processor. This allows Java programs to run on any platform that has a JVM without needing to be recompiled.
In this core java training session, you will learn Elements of Java programming. Topics covered in this session are:
• Quick review of some important concepts from last class
• History of Java
• JDK and JRE
• Byte Code and JVM (Java Virtual Machine)
• Platform Independence
• Principles of Object Oriented Programming
• Writing your first Java Application
• Elements of Java programming language
• Built in Data Types
• Conditional Statements
• Loops
For more information about this course visit on this link: https://www.mindsmapped.com/courses/software-development/learn-java-fundamentals-hands-on-training-on-core-java-concepts/
- Java was created at Sun Microsystems in 1991 to provide a platform-independent programming language. It is an object-oriented language similar to C++ but simpler and more robust.
- Java code is compiled into bytecode that can run on any Java Virtual Machine (JVM), allowing "write once, run anywhere" capability. The JVM handles running the bytecode.
- Java supports object-oriented programming features like abstraction, encapsulation, inheritance, and polymorphism. It also supports features like being distributed, multithreaded, secure, and using automatic memory management.
The document provides an overview of object oriented programming using Java, covering topics like the history of Java, data types, variables, control statements, operators, and classes. It also includes examples of Java code and explanations of concepts like object oriented programming, platforms, memory management, and the Java runtime environment. The document is meant as an introduction to programming with Java for students learning object oriented concepts.
The document discusses the history and characteristics of the Java programming language, including how Java source code is compiled to bytecode and executed by the Java Virtual Machine. It also covers Java program and package structures, importing classes, documentation comments, and data types and methods in Java.
This document provides an introduction to the Java programming language. It discusses that Java was created at Sun Microsystems in 1991 to provide a platform-independent language. Java code is compiled to bytecode that can run on any Java Virtual Machine. The document outlines key Java concepts like object-oriented programming, platform independence, bytecode, the Java Virtual Machine, and garbage collection. It also provides examples of Hello World programs in Java and discusses compiling and running Java code.
This document provides an overview of Java basics, including:
- Java programs are portable across operating systems due to use of byte code, a standardized class library, and language specification.
- Java is secure through features like no pointer arithmetic, garbage collection, and restrictions on applets.
- Java is robust with features like bounds checking and garbage collection that prevent crashes.
- Java programs are either standalone applications or applets that run in a web browser.
- The Java compiler translates source code to byte code, which is then interpreted at runtime.
The document discusses the fundamentals of object-oriented programming and Java. It covers key concepts like abstraction, encapsulation, inheritance and polymorphism. It also describes the basic structure of a Java program, including classes, objects, methods and variables. It explains how to set up a Java development environment, compile and run a simple Java program.
This document provides an overview of object-oriented programming concepts in Java including abstraction, encapsulation, inheritance, and polymorphism. It discusses key Java concepts like classes, objects, methods, and access specifiers. It also covers Java fundamentals like variables, data types, operators, control flow statements, comments, and arrays. Additionally, it describes the Java runtime environment, how to set up a Java development environment, compile and run a simple Java program. The document is intended as an introduction to object-oriented programming and the Java programming language.
The document discusses cloud interoperability and standards. It defines interoperability as the ability of cloud systems to exchange data and information. This allows applications and workloads to seamlessly move between cloud platforms. The document outlines motivations for interoperability such as customer choice, competition, and innovation. It also discusses functional scope, policy objectives, use cases, and enabling user access across clouds through standards.
Cloud Lock-in vs. Cloud Interoperability - Indicthreads cloud computing conf...IndicThreads
Session presented at the 2nd IndicThreads.com Conference on Cloud Computing held in Pune, India on 3-4 June 2011.
http://CloudComputing.IndicThreads.com
Abstract:As the cloud adoption increases, there is a growing concern about the lock-in of customers into the various cloud platforms. This session will discuss various major cloud platforms, the type of lock-in the customer will face in each of these platforms and what each customer can do to minimize their lock-in.
Key takeaways for audience are:
Understand what is cloud lock-in
Types of cloud vendor lock-ins
What is cloud interoperability
Major initiatives around cloud interoperability standards
Goals, differences and players/proponents of these major standards
Steps to minimize cloud lock-in for your customers
Speaker: Ashwin Waknis is a Sr. IT professional with 15 years in the industry. Ashwin is currently head of the Cloud Professional Services Business at Persistent Systems. Before that Ashwin was a Sr. Product Manager at Cisco Systems where he lead major initiatives around Knowledge Management, Enterprise Portal, Web 2.0/Social softwares and Enterprise Search. For the last 2 years, Ashwin has been involved in Cloud Computing initiatives first at Cisco and then at Persistent Systems.Ashwin has spoken at many customer workshops and events organized for educational institutes.
Architecture and Practices on Cloud Interoperability and PortabilityThomas Lee
Cloud computing is believed to be another big wave of Internet technology after World Wide Web and mobile computing. The Open Group has identified cloud computing as a major driver to develop global GDP. In Hong Kong, the Office of Government CIO (OGCIO) has established the Expert Group on Cloud Computing Services and Standards (EGCCSS) to drive cloud computing adoption and deployment. Various cloud technical committees, including the two groups mentioned above, have identified the interoperability and portability of cloud services as a key principle for stimulating and driving economic benefits. EGCCSS has formed a Working Group Cloud Computing Interoperability Standards (WGCCIS) specifically to address this challenge.
In this talk, Dr Thomas Lee shares his experience in working in WGCCIS as a co-opt member and introduces the Open Group Guide on Cloud Computing Portability and Interoperability. He explains the fundamental concepts of cloud interoperability and portability and the reference architecture to design interoperable interfaces between on-premise and cloud application components. He also discusses the architectural principles for supporting cloud service providers to develop interoperable cloud services. From the enterprise user perspective, he also summarizes some good practices from the Open Group Guide that help cloud consumers to formulate their cloud strategy to manage vendor lock-in when selecting cloud services.
This document discusses using an Enterprise Service Bus (ESB) architecture as an interoperability and resource sharing platform in the cloud. It describes the need for cloud interoperability and discusses current challenges and efforts related to data/semantic interoperability and customer lock-in. The document proposes using a service bus with light-weight bindings to provide location decoupling and integration of applications and platforms across different cloud providers in a standardized way. Key aspects of the proposed architecture include a virtualization layer, service repository/registry, and composable middleware.
This presentation will help you all a lot.
because this is not from a particular text book or a reference guide it is a collection of several web sites.
The document provides an overview of the Java programming language, including its history, core concepts, and execution process. Some key points:
- Java was created in 1991 by James Gosling at Sun Microsystems with an initial focus on embedded systems, but later expanded to web applications due to the rise of the Internet.
- The Java platform consists of the Java programming language, Java Virtual Machine (JVM), and Java Application Programming Interfaces (APIs). The JVM allows Java programs to run on any hardware/software platform.
- A Java program is compiled into bytecode that can be executed by any JVM, providing platform independence. The execution involves compiling the source code and then interpreting the bytecode on
This document provides an introduction to programming in Java. It discusses key Java concepts like object-oriented programming, classes, objects, and encapsulation. It explains that Java code is compiled to bytecode that runs on a virtual machine, making Java portable across platforms. The document also gives an overview of Java features and components like the Java Development Kit tools, APIs, and libraries. It provides examples of simple Java programs and how they are compiled and executed.
This document provides an overview of variables and their scope in Java. It discusses the three types of variables in Java: local variables, instance variables, and class (static) variables.
Local variables are declared within methods, constructors, or blocks and can only be accessed within their declaration scope. Instance variables are declared within a class but outside of methods and can be accessed using an object reference. Class variables are declared with the static keyword, belong to the class itself rather than any object, and are accessed via the class name. The document provides examples and discusses default variable initialization.
This document provides an overview of the Java programming language and platform. It discusses Java's origins, characteristics, editions, and components like the JDK, JRE, and JVM. Java is introduced as a simple, secure, robust, and platform-independent language well-suited for client-server web applications and small devices. The document outlines Java's history and evolution from 1995 to present. Key aspects of Java like object-orientation, portability, and multi-threading are summarized.
The document provides information about Java, including:
- Java is an object-oriented programming language that is platform independent and can be used to create applications for web, desktops, mobile devices, and more.
- Java was originally developed in the early 1990s by James Gosling at Sun Microsystems for use in set-top boxes, but became popular for building web applications and is now widely used.
- The Java Development Kit (JDK) includes tools like javac, java, javadoc and others needed to develop, compile, run and document Java programs, as well as class libraries and documentation. The JVM executes compiled Java code.
1) The document discusses Java concepts across 5 doses: the Java Community Process, Java characteristics, terminology, platforms, and frameworks.
2) It covers key Java characteristics like being cross-platform, using object-oriented programming, having robust and good performance, and automatic memory management.
3) Important Java terminology is defined, like the Java Virtual Machine (JVM), Java Runtime Environment (JRE), and Java Development Kit (JDK).
4) The main Java platforms - Java SE, Java ME, and Java EE - are outlined, describing their uses for general applications, limited devices, and enterprise software respectively.
5) Popular Java frameworks for testing, building, GUIs, IDE
In this session you will learn:
1. Principles of Object-Oriented Programming
2. Writing your first Java Application
3. Elements of Java programming language
4. Built in Data Types
5. Conditional Statements
6. Loops
Java is an object-oriented programming language developed by James Gosling at Sun Microsystems in 1991. It derives much of its syntax from C and C++ but is designed to have as few implementation dependencies as possible so that applications written in Java can run on any device with a Java Virtual Machine (JVM). The JVM converts Java bytecode into machine code that can be executed by the device's processor. This allows Java programs to run on any platform that has a JVM without needing to be recompiled.
In this core java training session, you will learn Elements of Java programming. Topics covered in this session are:
• Quick review of some important concepts from last class
• History of Java
• JDK and JRE
• Byte Code and JVM (Java Virtual Machine)
• Platform Independence
• Principles of Object Oriented Programming
• Writing your first Java Application
• Elements of Java programming language
• Built in Data Types
• Conditional Statements
• Loops
For more information about this course visit on this link: https://www.mindsmapped.com/courses/software-development/learn-java-fundamentals-hands-on-training-on-core-java-concepts/
- Java was created at Sun Microsystems in 1991 to provide a platform-independent programming language. It is an object-oriented language similar to C++ but simpler and more robust.
- Java code is compiled into bytecode that can run on any Java Virtual Machine (JVM), allowing "write once, run anywhere" capability. The JVM handles running the bytecode.
- Java supports object-oriented programming features like abstraction, encapsulation, inheritance, and polymorphism. It also supports features like being distributed, multithreaded, secure, and using automatic memory management.
The document provides an overview of object oriented programming using Java, covering topics like the history of Java, data types, variables, control statements, operators, and classes. It also includes examples of Java code and explanations of concepts like object oriented programming, platforms, memory management, and the Java runtime environment. The document is meant as an introduction to programming with Java for students learning object oriented concepts.
The document discusses the history and characteristics of the Java programming language, including how Java source code is compiled to bytecode and executed by the Java Virtual Machine. It also covers Java program and package structures, importing classes, documentation comments, and data types and methods in Java.
This document provides an introduction to the Java programming language. It discusses that Java was created at Sun Microsystems in 1991 to provide a platform-independent language. Java code is compiled to bytecode that can run on any Java Virtual Machine. The document outlines key Java concepts like object-oriented programming, platform independence, bytecode, the Java Virtual Machine, and garbage collection. It also provides examples of Hello World programs in Java and discusses compiling and running Java code.
This document provides an overview of Java basics, including:
- Java programs are portable across operating systems due to use of byte code, a standardized class library, and language specification.
- Java is secure through features like no pointer arithmetic, garbage collection, and restrictions on applets.
- Java is robust with features like bounds checking and garbage collection that prevent crashes.
- Java programs are either standalone applications or applets that run in a web browser.
- The Java compiler translates source code to byte code, which is then interpreted at runtime.
The document discusses the fundamentals of object-oriented programming and Java. It covers key concepts like abstraction, encapsulation, inheritance and polymorphism. It also describes the basic structure of a Java program, including classes, objects, methods and variables. It explains how to set up a Java development environment, compile and run a simple Java program.
This document provides an overview of object-oriented programming concepts in Java including abstraction, encapsulation, inheritance, and polymorphism. It discusses key Java concepts like classes, objects, methods, and access specifiers. It also covers Java fundamentals like variables, data types, operators, control flow statements, comments, and arrays. Additionally, it describes the Java runtime environment, how to set up a Java development environment, compile and run a simple Java program. The document is intended as an introduction to object-oriented programming and the Java programming language.
Java is a programming language and platform that is commonly used to develop desktop applications, web applications, mobile apps, and more. The document introduces Java by explaining what it is, where it is used, the types of Java applications that can be created, and how the Java compilation and execution process works at a high level. It also provides an example "Hello World" Java program to demonstrate the basic anatomy of a Java file, including classes, methods, and how the main method acts as the program entry point.
The document provides an introduction to Java programming including:
- Java is an object-oriented language where programs are written as classes and allows "write once, run anywhere" functionality.
- Key features of Java include being simple, robust, secure, multi-threaded, and dynamically flexible.
- The Java architecture includes the compiler, JVM, JRE and JDK which work together to compile and execute Java code.
- Common Java applications include mobile apps, desktop apps, web apps, games, cloud apps, and IoT apps.
- A basic Java program structure includes documentation, packages, imports, classes, and a main method.
The document provides an overview of the Java programming language. It discusses that Java was developed in the early 1990s by Sun Microsystems. It then summarizes some of Java's main features, including that it is a simple, object-oriented, robust, distributed, platform independent, secured, architecture-neutral, portable, high-performance, multi-threaded, and dynamic language. It also briefly discusses the Java Virtual Machine, Java Runtime Environment, Java Development Kit, Java bytecode, and the main method.
Similar to Oracle v Google: How Can You Protect Computer APIs (20)
Oracle v Google: How Can You Protect Computer APIs
1. Oracle v. Google: How Can Your Protect APIs?
Dallas Bar Association
Computer Law Section
October 22, 2012
Marc A. Hubbard
Hubbard Law PLLC
mhubbard@hubbardip.com
Hubbard ip
2. Agenda
• Java API and Android API and issues involved in Oracle v. Google
• Basic copyright issues
• Rationale of decision by court on issue of copyrightability of Java API
• Legal and business ramifications
• Other modes of protection
• Effect on protecting APIs as well as class names, file formats, protocols and other types of
specifications
• Business ramifications for the computer industry, open source initiatives,and the adoption of
standards.
2
Hubbard ip
3. Lawsuit
• Early 2010: Oracle acquired Sun Microsystem and Sun’s interest in Java
• Late 2010: Oracle sued Google, accusing Google’s Android operating system of —
• Infringing copyright in Java API
• Patent infringement
• Trial in two phases in 2012:
• Copyright — Java API presumed to be copyrightable; jury found infringement and no fair use
• Patent - Jury found no infringement
• Court issued order after trial, on May 31, finding that Java API not copyrightable
• Oracle has filed notice of appeal
3
Hubbard ip
4. What is “Java”?
• It’s an object-oriented programming language based on C and C++ that can be used to write source code for
compiling into a platform independent object code called “bytecode”
• It’s a software “platform” that allows creation of applications that for “write once, run anywhere”
• A “virtual machine” (one for each OS/hardware platform) (“JVM”)
• Interprets (executes) applications written in Java
• Provides the abstraction layer necessary to achieve platform independence for applications
• An extensible application programming interface (API)
• Comprised of multiple libraries, referred to as “packages,” of previously written software (classes and
interfaces) that provide “core” functions that can be called by applications in written Java and running on a Java
virtual machine
• Very helpful to application programmers; some are arguably necessary for many functions because of hardware-
dependency of the implementation
4
Hubbard ip
6. Object oriented programming Java style
• A function that can be called by an application is referred to as a “method”
• Each method must be a member of a “class”
• Every Java program must have one class with one method
• A class may implement more than one method
• Classes may be grouped into “packages”
6
Hubbard ip
7. Java API classes written using Java
Simplified example of package, class, method within API
package java.lang; Declares package “java.lang”
public class Math { Declares class “java.lang.math”
public static int max (int x, int y) { Declares method “java.lang.math.max”
if (x > y) return x ;
Body of method
else return y ;
}
}
Part of body of method in class file of an application calling method
int a = java.lang.Math.max (2, 3); Calling method “max” with
arguments “2” and “3”
7
Hubbard ip
8. Java class file example
public class Bicycle {
Declaration of the class and start of
body of class
// the Bicycle class has
// three fields
public int cadence;
Declaration of data fields and their types
public int gear;
public int speed;
// the Bicycle class has for the class
// one constructor
public Bicycle(int startCadence, int startSpeed,
int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
// the Bicycle class has
// four methods
public void setCadence(int newValue) {
cadence = newValue;
}
public void setGear(int newValue) {
gear = newValue;
}
public void applyBrake(int decrement) {
speed -= decrement; Declaration of method
}
Body of Method
public void speedUp(int increment) {
speed += increment;
}
}
8
Hubbard ip
9. Java API
• In 1996, at the time Java was introduced, API had 8 packages
• 3 packages were “core,” meaning must have these three to be able to write
applications using Java (java.lang, java.io, java.util)
• Sun and Java Community Process developed standard specifications for Java
classes and methods and added many more packages, classes and methods
• By 2008, API had 166 packages, containing over 600 classes with over 6000
methods
• Copyright in API registered as a single work
9
Hubbard ip
10. What is “Android”?
• A complete software stack for mobile devices that is open source and without
license fees
• Application programs are written in Java
• Allows large number of programmers already familiar with writing in Java to also
write for Android
• Android includes a virtual machine that is used to to interpret Java bytecode (.class
or .jar file) that has been modified (into a “.dex” file) to run on a virtual machine that is
part of OS called the Dalvick virtual machine
• Android Includes a library written in Java that implements 37 of Java’s 166 packages
10
Hubbard ip
11. Android System Architecture
Blue = written in Java
API of core packages
Google’s version of the
Java virtual machine
specially tuned for
mobile environment
11
Hubbard ip
12. Points of similarity between 37 packages
implementing Android API and Java API
• Functions that are available, including inputs and outputs
• Names of packages, classes, methods, and arguments generally identical (for convenience of application
developers)
• Arrangement of the methods into classes, and the arrangement of classes into packages
• Declaration statements for packages, classes and methods
• Formats for declarations, etc., dictated by Java programming language
• “Throw” statements largely similar
• Standard terms dictated by Java programming language (e.g. “public,” “private,” “static”) and the types
of values (e.g. “int”, “boolean,” “char,” and “string”)
• Calls to methods (which much follow prescribed form)
12
Hubbard ip
13. Points of dissimilarity
• Instructions that implement the method — the body of the methods
• NET RESULT
• 3% of the lines in the 37 packages of the Android API are identical to Java API
• 97% of the lines are dissimilar
13
Hubbard ip
14. Business background
• Sun sued Microsoft in 1997 for breach of a licensing agreement because of
incompatible version of Java VM that allowed developers to take advantage of
Windows features.
• Microsoft referred to its version of the VM as “Java”, which seemed to be the primary
point of contention
• Sun wanted Google to pay a big license fee to call its phone a Java phone, and join
Nokia, Motorola, Blackberry (RIM) and others in developing apps that run across all the
platforms.
• Java licensing was a $100 million plus business for Sun
• Sun would also profit by enlarging the Java community and creating more of a barrier to
competition with Microsoft, et al.
14
Hubbard ip
15. Google’s position
• As long as it is not referring using the “Java” trademark, or implying that it’s platform
was “Java” or fully compliant with the Java specifications, it was free to build a VM
that could run programs written in Java unless there was a patent.
15
Hubbard ip
16. Oracle’s purported concern
• “Fragmentation” / Balkanization of platforms
• Imperfect interoperability among platforms means that Java applications will not run on
incompatible platforms.
• Java applications relying on unsupported packages will not run on Android
• Licensing requirements avoid fragmentation problems
• Questions: if fragmentation was really the issue, would Oracle have sued Google if it has
implemented all 166 of the Java API packages?
• There were any number of ways to organize functions of the API into classes, the classes
into packages, and to name the various classes and packages, and there was a signficant
amount of expression involved in the particular API.
16
Hubbard ip
17. Fairness issue
• Is it fair to allow Google to gain the benefit of the Java ecosystem without paying for
the privilege of using it, or at least contributing to it?
• Subject to patent rights, Google or anyone else to could have created a virtual
machine and an API offering the same set of functionality, but with different names
for the packages, classes and methods
• Google obviously wanted the advantages of Java without abide by the restrictions
imposed by Sun or Oracle
17
Hubbard ip
18. Fundamental legal principles guiding decisions as
formulated by district court
• There is no decision directly on point; no court has ever decided the issue of whether a computer API was
protectable by copyright.
• Under 17 U.S.C. §102(b), copyright protection never extends to any idea, procedure, process, system,
method of operation or concepts regardless of the form. (The idea/expression dichotomy)
• Functional elements essential for interoperability are not copyrightable.
• Under the merger doctrine, when there is only one or just a few ways to express something, no one can claim
ownership of such expression by copyright.
• Under the names doctrine, names and short phrases are not copyrightable.
• Court should not yield to temptation to find copyrightability merely to reward an investment in a body of
intellectual property.
• “Sweat of the brow” doctrine rejected in U.S. Supreme Court in Feist Publications, Inc., v. Rural Telephone
Service Co., 499 U.S. 340 (1991).
18
Hubbard ip
19. Origin of idea / expression dichotomy and merger
doctrine
• Baker v. Seldon, 101 U.S. 99 (1879)
• Book on new system of double-entry accounting, which included blank form;
infringer made use of method of bookkeeping, but used different forms.
• And where the art it teaches cannot be used without employing the methods and
diagrams used to illustrate the book, or such as are similar to them, such
methods and diagrams are to be considered as necessary incidents to the art, and
given therewith to the public; not given for the purpose of publication in other
works explanatory of the art, but for the purpose of practical application.
19
Hubbard ip
20. Idea / expression dichotomy as codified in 1976
Copyright Act
However, the Copyright Act does not contain explicit standards for separating ideas from
expression.
20
Hubbard ip
21. Merger doctrine rationale
• Where idea and expression are intertwined and where non-protectable ideas
predominate, copyright protection does not exist because granting protection to the
expressive component necessarily would extend protection to the work’s
uncopyrightable ideas as well.
• The merger doctrine is applied as a prophylactic device to ensure that courts do not
unwittingly grant protection to an idea by granting exclusive rights to the only, or one
of only a few, means of expressing that idea.
• See Gates Rubber Co. v. Bando Chemical Indus., Ltd., 9 F.3d 823 (10th Cir. 1993);
Lexmark Int’l, Inc. v. Static Control Components, Inc., 387 F.3d 522 (6th Cir. 2004); ;
Murray Hill Publ’ns, Inc. v. Twentieth Century Fox Film Corp., 361 F.3d 312 (6th Cir.
2004); Concrete Machinery Co. v. Classic Lawn Ornaments, Inc., 843 F.2d 600,
606-607 (1st Cir. 1988); Apple Computer, Inc. v. Microsoft Corp., 799 F.Supp. 1006
(N.D.Cal. 1992).
21
Hubbard ip
22. Names and short phrases not protectable
Copyright Office regulation 37 C.F.R. 202.1(a)
§ 202.1
Material not subject to copyright.
The following are examples of works not subject to copyright and applications
for registration of such works cannot be entertained:
(a) Words and short phrases such as names, titles, and slogans; familiar
symbols or designs; mere variations of typographic ornamentation, lettering or
coloring; mere listing of ingredients or contents;
Rule followed in 9th Circuit. Sega Enterprises Ltd. v. Accolade, Inc., 977 F.2d 1510
(9th Cir. 1992), (a competitor’s use of Sega’s initialization code, consisting of
merely of 20 bytes of initialization code plus the letters S-E-G-A, was of de
minimis length and therefore likely a “word” or “short phrase” that is not
protected)
Most other circuits appear to have accepted this regulation as a fair statement of
the law
22
Hubbard ip
23. Disfavor of “structure, sequence and organization”
theory
• Court acknowledged that non-literal elements of computer software — “structure, sequence and
organization” — can by protected by copyright
• Whelan Associates, Inc. v. Jaslow Dental Laboratory, Inc., 797 F.2d 1222 (3d Cir. 1986) (structure
of program for managing a dental office was copyrightable because there were many different
ways to structure a program to manage a dental laboratory)
• Johnson Controls, Inc. v. Phoenix Control Sys., Inc., 886 F.2d 1173, 1175 (9th Cir. 1989)(affirming
under abuse of discretion standard finding that SSO of program was protectable expression on
grounds that there was evidence that there was room for creativity in expression of functions.)
• But court noted that SSO type of analysis had become disfavored in 9th circuit and other circuits,
had been heavily criticized, and failed to recognize the danger of conferring monopoly by copyright
over Congress had expressly warned should only be granted by patent. See Sega Enters., Ltd. v.
Accolade, Inc., 977 F.2d 1510 (9th Cir. 1992)
• Whelan and Johnson Controls: “Too narrow a view of the ‘idea’”
23
Hubbard ip
24. Court favors abstraction, filtration and comparison
analysis
• Originally developed in the Computer Assocs. Int’l, Inc. v. Altai, Inc., 982 F.2d 693
(2nd Cir. 1992) as an aid to analyze to distinguish between unprotectable ideas and
protectable expression when comparing software programs for substantially
similarity.
• (1) Dissect program according to its varying levels of generality to provide a
framework
• (2) Examine each level of generality or abstraction in order to filter out those
elements of the program which are unprotectable.
• (3) Compare of the remaining protectable elements with the allegedly infringing
work to determine whether the defendants have misappropriated substantial
elements of the plaintiff’s work.
24
Hubbard ip
25. Filtration of unprotectable elements
• (1) Structure based on “practical considerations”
• (2) Structures dictated by external factors
• “standard techniques”
• Extrinsic considerations such a computer hardware, compatibility requirements with
other programs, demands of industry being serviced, widely accepted programming
practices, hardware standards, software standards, mechanical specifications
• Scènes à faire doctrine
• (3) Structures already found in public domain
25
Hubbard ip
26. uncopyrightable.
5
U.S. Copyright Office, Circular 34; see 37 C.F.R. 202.1(a).
6
This rule is followed in the Ninth Circuit. Sega Enters., Ltd. v. Accolade, Inc., 977 F.2d
7
1510, 1524 n.7 (9th Cir. 1992). This has relevance to Oracle’s claim of copyright ownership
Court concernedand packages.
8
over names of methods, classes that SSO is domain of patents
9
2. THE DEVELOPMENT OF LAW ON THE COPYRIGHTABILITY
10 OF COMPUTER PROGRAMS AND THEIR STRUCTURE,
SEQUENCE AND ORGANIZATION.
11
Turning now to the more difficult question, this trial showcases a distinction between
12
For the Northern District of California
copyright protection and patent protection. It is an important distinction, for copyright
13
exclusivity lasts 95 years whereas patent exclusivity lasts twenty years. And, the Patent and
14
Trademark Office examines applications for anticipation and obviousness before allowance
15
whereas the Copyright Office does not. This distinction looms large where, as here, the vast
16
majority of the code was not copied and the copyright owner must resort to alleging that the
17
accused stole the “structure, sequence and organization” of the work. This phrase — structure,
18
sequence and organization — does not appear in the Act or its legislative history. It is a phrase
19
that crept into use to describe a residual property right where literal copying was absent.
20
A question then arises whether the copyright holder is more appropriately asserting an exclusive
21
right to a functional system, process, or method of operation that belongs in the realm of patents,
22
not copyrights.
23
A. Baker v. Seldon.
24
26
25
The general question predates computers. In the Supreme Court’s decision in Baker v.
Hubbard ip
Seldon, 101 U.S. 99 (1879), the work at issue was a book on a new system of double-entry
26
27. Holding 1: Specification for each method is an idea
• “The method specification was the idea. The method implementation is the
expression.”
• Google used its own code to implement method specification, including inputs,
outputs, etc.
• Names of individual methods, classes and packages not protectable
• The declarations, save for the argument names, dictated by rules of Java (external
considerations and interoperability)
• As long as the specific code written to implement a method is different, anyone
is free under the Copyright Act to write his or her own method to carry out exactly the
same function or specification of any and all methods used in the Java API. Ideas,
functions and concepts cannot be “monopolized” by copyright.
27
Hubbard ip
28. Holding 2: overall system of organization of methods
not protectable
• Arrangement of methods into classes, and classes into packages involved creativity
and resembles a taxonomy, but it is nevertheless a command structure or system or
method of operation.
• Because the use of the same taxonomy or command structure was necessary to
achieve interoperability, it has to be a method of operation
• Google replicated what was necessary, but not more than necessary, to achieve
interoperability.
• Oracle’s fears of fragmentation and imperfect interoperability arising from incomplete
implementation of API tends to confirm that it is a method of operation
28
Hubbard ip
29. Implications
• It is the first decision to address squarely issue of protectability of specification of computer API
• Will have to see how the appellate court reacts.
• This is not a holding that all APIs cannot be protected by copyright. However, it is difficult to imagine when an API
would be copyrightable. If copying of elements necessary to achieve interoperability or compatability will always
be permitted, APIs will not likely ever be found to be protectable by copyright.
• If decision is upheld on appeal, the only real legal limits on third parties recreating a software or hardware
“platform” will be:
• Contractual limitations
• Patents
• Secrecy
• Trademarks
29
Hubbard ip
30. Oracle/Sun failed at protecting Java API with patents
• Infringement of 7 patents plead
• Infringement claims with respect to 2 survived until trial and jury found no
infringement
• Patents had little, if anything, to do with the Java API or its implementation
• Not so easy to obtain patents on method of operation of an API or to make a claim
of infringement stick
30
Hubbard ip
31. Feasibility of protecting API with patents
• API software specifications, as such, are abstract
• Patent must claim a process, a machine or article of manufacture
• Must look to patent processes essential to implementation of the API
• However, patent eligibility of computer implemented processes under scrutiny
31
Hubbard ip
32. Patents on software implemented inventions
• Bilski v. Kappos, 130 S.Ct. 3218 (2010)
• Laws of nature, physical phenomena, and abstract ideas are not patentable
• CLS Bank v. Alice Corp. en banc rehearing ordered by the Federal Circuit (involves
computer implemented financial business method):
• “What test should the court adopt to determine whether a computer-implemented
invention is a patent ineligible "abstract idea"; and when, if ever, does the presence
of a computer in a claim lend patent eligibility to an otherwise patent-ineligible idea?
• “In assessing patent eligibility under 35 U.S.C. § 101 of a computer-implemented
invention, should it matter whether the invention is claimed as a method, system, or
storage medium; and should such claims at times be considered equivalent for § 101
purposes?”
32
Hubbard ip
33. The abstraction chasm
Method of operation, process, system
Invention / Practical application of idea Abstract idea Expression of idea
§101 case law Case law relating to
pushing fuzzy copyrightability of program
boundary one structures pushing fuzzy
direction boundary the other direction
33
Hubbard ip
34. Basic advice to clients developing an API or hardware
or software “platform”
• Keep secret; avoid “open source” or “open standard;” self-help precautions
• Aggressive contractual and licensing provisions to keep API and other interfaces
secret
• Patent all novel processes essential to implementing or supporting API specification
• If business model depends on “open” API or open standard, there may not much
that can be done, other than create circumstances which favor inclusion rather than
exclusion
34
Hubbard ip
35. Basic advice to client wanting to develop
interoperable software and hardware
• Avoid contracts with party who developed platform (watch for implied contracts
associated with using specification)
• Evaluate patents
• Avoid confidentiality restrictions
• Avoid using trademarks
• Reverse engineer using clean room techniques that are consistent with current law
• Otherwise, have at it
35
Hubbard ip
36. Open source and standards
• Generally viewed by the popular media and software programmers as good for open
source; one less obstacle
• However, strong copyright protection is, arguably, essential to
• Enforcing licensing requirements in open source (e.g. contribution of derivatives, limits
on commercial uses, etc)
• Less ability to control development and guard against splintering or forking in standards
• More difficulty in getting standards off the ground
• One less means to force cooperation among all of the players, and to encourage others
to join
36
Hubbard ip
37. Conclusions
• Court’s decision expresses a consistent theme found in cases, which is the concern
over the extrinsic effects of extending copyright protection
• Specifications for an API, file format, etc. generally exist to achieve interoperability. If
reasoning of this decision is followed, APIs are likely not to be protectable under
copyright under rationale that they are methods of operation.
• Similarities in expression occurring within an implementation essential to
implementation of a specification are likely not protectable under the merger or
scènes à faire doctrines.
• Subject to misappropriation of trade secrets, contractual limitations, patents, and
trademark rights, software and hardware platforms appear to be generally free for
the taking
37
Hubbard ip