Java Platform, Enterprise Edition (Java EE), formerly Java 2 Platform, Enterprise Edition (J2EE), currently Jakarta EE, is a set of specifications, extending Java SE[1] with specifications for enterprise features such as distributed computing and web services.[2] Java EE applications are run on reference runtimes, that can be microservices or application servers, which handle transactions, security, scalability, concurrency and management of the components it is deploying.

Java EE is defined by its specification, the specification defines APIs and their interactions. As with other Java Community Process specifications, providers must meet certain conformance requirements in order to declare their products as Java EE compliant.

The platform was known as Java 2 Platform, Enterprise Edition or J2EE from version 1.2, until the name was changed to Java Platform, Enterprise Edition or Java EE in version 1.5. The current version is called Java EE 8.

J2EE 1.2 (December 12, 1999)

J2EE 1.3 (September 24, 2001)

J2EE 1.4 (November 11, 2003)

Java EE 5 (May 11, 2006)

Java EE 6 (December 10, 2009)

Java EE 7 (May 28, 2013,[3] but April 5, 2013 according to spec document. June 12, 2013 was the planned kickoff date[4])

Unified Expression Language (EL) is a simple language originally designed to satisfy the specific needs of web application developers. It is used specifically in Java Server Faces to bind components to (backing) beans and in Contexts and Dependency Injection to name beans, but can be used throughout the entire platform.

Java Transaction API contains the interfaces and annotations to interact with the transaction support offered by Java EE. Even though this API abstracts from the really low-level details, the interfaces are also considered somewhat low-level and the average application developer in Java EE is either assumed to be relying on transparent handling of transactions by the higher level EJB abstractions, or using the annotations provided by this API in combination with CDI managed beans.

Java Message Service provides a common way for Java programs to create, send, receive and read an enterprise messaging system's messages.

Validation: This package contains the annotations and interfaces for the declarative validation support offered by the Bean Validation API. Bean Validation provides a unified way to provide constraints on beans (e.g. JPA model classes) that can be enforced cross-layer; in Java EE, JPA honors bean validation constraints in the persistence layer, while JSF does so in the view layer.

Batch Applications provides the means to run long running background tasks that possibly involve a large volume of data and which may need to be periodically executed.

Java EE Connector Architecture is a Java-based technology solution for connecting application servers and enterprise information systems (EIS) as part of enterprise application integration (EAI) solutions. This is a low-level API aimed at vendors that the average application developer typically does not come in contact with.

In an attempt to limit the footprint of web containers, both in physical and in conceptual terms, the web profile was created, a subset of the Java EE specifications, the Java EE web profile comprises the following:

Although by definition all Java EE implementations provide the same base level of technologies (namely, the Java EE spec and the associated APIs), they can differ considerably with respect to extra features (like connectors, clustering, fault tolerance, high availability, security, etc.), installed size, memory footprint, startup time, etc.

To implement business logic, Enterprise JavaBean (EJB) is the dedicated technology in Java EE, for the actual persistence, JDBC or Java Persistence API (JPA) can be used. The example below uses EJB and JPA. Not explicitly shown is that JTA is used under the covers by EJB to control transactional behavior.

For defining entity/model classes Java EE provides the Java Persistence API (JPA), and for expressing constraints on those entities it provides the Bean Validation API. The example below uses both these technologies.

1.
Java (software platform)
–
Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. While they are less common than standalone Java applications, Java applets run in secure, sandboxed environments to provide many features of native applications, in addition, several languages have been designed to run natively on the JVM, including Scala, Clojure and Apache Groovy. Java syntax borrows heavily from C and C++, but object-oriented features are modeled after Smalltalk, Java eschews certain low-level constructs such as pointers and has a very simple memory model where every object is allocated on the heap and all variables of object types are references. Memory management is handled through integrated automatic garbage collection performed by the JVM, on November 13,2006, Sun Microsystems made the bulk of its implementation of Java available under the GNU General Public License. The latest version is Java 8, the only supported version as of 2016, Oracle has announced that using older versions of their JVM implementation presents serious risks due to unresolved security issues. The Java platform is a suite of programs that facilitate developing and running programs written in the Java programming language. A Java platform will include an engine, a compiler. Java ME, Specifies several different sets of libraries for devices with limited storage, display and it is often used to develop applications for mobile devices, PDAs, TV set-top boxes, and printers. Java SE, For general-purpose use on desktop PCs, servers, Java EE, Java SE plus various APIs which are useful for multi-tier client–server enterprise applications. The Java platform consists of programs, each of which provides a portion of its overall capabilities. For example, the Java compiler, which converts Java source code into Java bytecode, is provided as part of the Java Development Kit, the Java Runtime Environment, complementing the JVM with a just-in-time compiler, converts intermediate bytecode into native machine code on the fly. The Java platform also includes a set of libraries. The heart of the Java platform is the concept of a machine that executes Java bytecode programs. This bytecode is the same no matter what hardware or operating system the program is running under, there is a JIT compiler within the Java Virtual Machine, or JVM. The JIT compiler translates the Java bytecode into native processor instructions at run-time, the use of bytecode as an intermediate language permits Java programs to run on any platform that has a virtual machine available. Since JRE version 1.2, Suns JVM implementation has included a just-in-time compiler instead of an interpreter, although Java programs are cross-platform or platform independent, the code of the Java Virtual Machines that execute these programs is not. Every supported operating platform has its own JVM, in most modern operating systems, a large body of reusable code is provided to simplify the programmers job. This code is provided as a set of dynamically loadable libraries that applications can call at runtime

2.
Java Card
–
Java Card refers to a software technology that allows Java-based applications to be run securely on smart cards and similar small memory footprint devices. Java Card is the tiniest of Java platforms targeted for embedded devices, Java Card gives the user the ability to program the devices and make them application specific. It is widely used in SIM cards and ATM cards, the first Java Card was introduced in 1996 by Schlumbergers card division which later merged with Gemplus to form Gemalto. Java Card products are based on the Java Card Platform specifications developed by Sun Microsystems, many Java card products also rely on the GlobalPlatform specifications for the secure management of applications on the card. The main design goals of the Java Card technology are portability and security, Java Card aims at defining a standard smart card computing environment allowing the same Java Card applet to run on different smart cards, much like a Java applet runs on different computers. As in Java, this is accomplished using the combination of a machine, and a well-defined runtime library. Portability remains mitigated by issues of memory size, performance, Java Card technology was originally developed for the purpose of securing sensitive information stored on smart cards. Applet Firewall Unlike other Java VMs, a Java Card VM usually manages several applications, different applications are therefore separated from each other by an applet firewall which restricts and checks access of data elements of one applet to another. Applet The applet is a machine which processes only incoming command requests. At the language level, Java Card is a subset of Java, all language constructs of Java Card exist in Java. However, many Java language features are not supported by Java Card, further, some common features of Java are not provided at runtime by many actual smart cards. Java Card bytecode run by the Java Card Virtual Machine is a subset of Java 2 bytecode run by a standard Java Virtual Machine. A Java Card applet thus typically uses less bytecode than the hypothetical Java applet obtained by compiling the same Java source code and this conserves memory, a necessity in resource constrained devices like smart cards. As a design tradeoff, there is no support for some Java language features, techniques exist for overcoming the size limitations, such as dividing the applications code into packages below the 64 KiB limit. Standard Java Card class library and runtime support differs a lot from that in Java, the Java Card runtime and virtual machine also support features that are specific to the Java Card platform, Persistence With Java Card, objects are by default stored in persistent memory. The runtime environment as well as the bytecode have therefore adapted to manage persistent objects. Atomicity As smart cards are powered and rely on persistent memory. The individual write operations performed by individual bytecode instructions and API methods are therefore guaranteed atomic, applet isolation The Java Card firewall is a mechanism that isolates the different applets present on a card from each other

3.
Java Platform, Micro Edition
–
Java Platform, Micro Edition or Java ME is a computing platform for development and deployment of portable code for embedded and mobile devices. Java ME was formerly known as Java 2 Platform, Micro Edition or J2ME, the platform uses the object-oriented Java programming language. It is part of the Java software-platform family, Java ME was designed by Sun Microsystems, acquired by Oracle Corporation in 2010, the platform replaced a similar technology, PersonalJava. Originally developed under the Java Community Process as JSR68, the different flavors of Java ME have evolved in separate JSRs, as of 22 December 2006, the Java ME source code is licensed under the GNU General Public License, and is released under the project name phoneME. As of 2008, all Java ME platforms are currently restricted to JRE1.3 features, Java ME devices implement a profile. Profiles are subsets of configurations, of which there are two, the Connected Limited Device Configuration and the Connected Device Configuration. There are more than 2.1 billion Java ME enabled mobile phones and it is popular in sub $200 devices such as Nokias Series 40. It was also used on the Bada operating system and on Symbian OS along with native software, users of Windows CE, Windows Mobile, Maemo, MeeGo and Android can download Java ME for their respective environments. The Connected Limited Device Configuration contains a subset of the Java-class libraries. CLDC is basically used for classifying myriad devices into a fixed configuration, a configuration provides the most basic set of libraries and virtual-machine features that must be present in each implementation of a J2ME environment. When coupled with one or more profiles, the Connected Limited Device Configuration gives developers a solid Java platform for creating applications for consumer and embedded devices. The configuration is designed for devices with 160KB to 512KB total memory, designed for mobile phones, the Mobile Information Device Profile includes a GUI, and a data storage API, and MIDP2.0 includes a basic 2D gaming API. Applications written for this profile are called MIDlets, almost all new cell phones come with a MIDP implementation, and it is now the de facto standard for downloadable cell phone games. However, many cellphones can run only those MIDlets that have approved by the carrier. A key design goal of MIDP3 is backward compatibility with MIDP2 content, the Connected Device Configuration is a subset of Java SE, containing almost all the libraries that are not GUI related. The Foundation Profile is a Java ME Connected Device Configuration profile and this profile is intended to be used by devices requiring a complete implementation of the Java virtual machine up to and including the entire Java Platform, Standard Edition API. Typical implementations will use some subset of that API set depending on the additional profiles supported and this specification was developed under the Java Community Process. The Personal Basis Profile extends the Foundation Profile to include lightweight GUI support in the form of an AWT subset and this is the platform that BD-J is built upon

4.
Java Platform, Standard Edition
–
Java Platform, Standard Edition or Java SE is a widely used computing platform for development and deployment of portable code for desktop and server environments. Java SE was formerly known as Java 2 Platform, Standard Edition or J2SE, the platform uses the object-oriented Java programming language. It is part of the Java software-platform family, Java SE defines a wide range of general-purpose APIs—such as Java APIs for the Java Class Library—and also includes the Java Language Specification and the Java Virtual Machine Specification. One of the most well-known implementations of Java SE is Oracle Corporations Java Development Kit. The platform was known as Java 2 Platform, Standard Edition or J2SE from version 1.2, until the name was changed to Java Platform, the SE is used to distinguish the base platform from the Enterprise Edition and Micro Edition platforms. The 2 was originally intended to emphasize the changes introduced in version 1.2. The naming convention has been changed several times over the Java version history, JSR59 was the umbrella specification for J2SE1.4 and JSR176 specified J2SE5.0. Java SE6 was released under JSR270, Java Platform, Enterprise Edition is a related specification that includes all the classes in Java SE, plus a number that are more useful to programs that run on servers as opposed to workstations. The Java Runtime Environment and Java Development Kit are the files downloaded and installed on a computer to run or develop Java programs. The Java package java. lang contains fundamental classes and interfaces closely tied to the language and this package contains 22 of 32 Error classes provided in JDK6. The main classes and interfaces in java. lang are, Object – the class that is the root of every class hierarchy, enum – the base class for enumeration classes. Class – the class that is the root of the Java reflection system, throwable – the class that is the base class of the exception class hierarchy. Error, Exception, and RuntimeException – the base classes for each exception type, thread – the class that allows operations on threads. String – the class for strings and string literals, stringBuffer and StringBuilder – classes for performing string manipulation. Comparable – the interface that allows generic comparison and ordering of objects, iterable – the interface that allows generic iteration using the enhanced for loop. Math and StrictMath – classes that provide basic math such as sine, cosine. The primitive wrapper classes that encapsulate primitive types as objects, the basic exception classes thrown for language-level and other common exceptions. Classes in java. lang are automatically imported into every source file and this package was added in J2SE1.2

5.
JavaFX
–
JavaFX is a software platform for creating and delivering desktop applications, as well as rich internet applications that can run across a wide variety of devices. JavaFX is intended to replace Swing as the standard GUI library for Java SE, JavaFX has support for desktop computers and web browsers on Microsoft Windows, Linux, and macOS. Before version 2.0 of JavaFX, developers used a statically typed, because JavaFX Script was compiled to Java bytecode, programmers could also use Java code instead. JavaFX applications could run on any desktop that could run Java SE, on any browser that could run Java EE, JavaFX2.0 and later is implemented as a native Java library, and applications using JavaFX are written in native Java code. JavaFX Script has been scrapped by Oracle, but development is being continued in the Visage project, on desktops, JavaFX supports Windows Vista, Windows 7, Windows 8, Windows 10, macOS and Linux operating systems. Beginning with JavaFX1.2, Oracle has released versions for OpenSolaris. On mobile, JavaFX Mobile 1. x is capable of running on mobile operating systems, including Symbian OS, Windows Mobile. Common profile JavaFX1.1 was based on the concept of a profile that is intended to span across all devices supported by JavaFX. To address the need for tuning applications on a class of devices. For example JavaFX Desktop profile includes Swing and advanced visual effects, Drag-to-Install From the point of view of the end user Drag-to-Install allows them to drag a JavaFX widget and drop it onto their desktop. The application will not lose its state or context even after the browser is closed, an application can also be re-launched by clicking on a shortcut that gets created automatically on the users desktop. This behavior is enabled out-of-the-box by the Java applet mechanism since Java 6 update 10 and is leveraged by JavaFX from the underlying Java layer, Sun touts Drag-to-Install as opening up of a new distribution model and allowing developers to break away from the browser. The plug-ins generate JavaFX Script code that preserves layers and structure of the graphics, developers can then easily add animation or effects to the static graphics imported. There was also an SVG graphics converter tool that allows for importing graphics, Sun Microsystems licensed a custom typeface called Amble for use on JavaFX powered devices. The font family was designed by mobile user interface design specialists Punchcut and is available as part of the JavaFX SDK1.3 Release, JavaFX2. x platform includes the following components, The JavaFX SDK, runtime tools. Graphics, media web services, and rich text libraries, Java FX1. x also included JavaFX compiler, which is now obsolete as JavaFX user code is written in Java. NetBeans IDE for JavaFX, NetBeans with drag-and-drop palette to add objects with transformations, effects and animations plus a set of samples, for JavaFX2 support you need at least NetBeans 7.1.1. For Eclipse users there is a plugin hosted on Project Kenai

6.
Java SE
–
Java Platform, Standard Edition or Java SE is a widely used computing platform for development and deployment of portable code for desktop and server environments. Java SE was formerly known as Java 2 Platform, Standard Edition or J2SE, the platform uses the object-oriented Java programming language. It is part of the Java software-platform family, Java SE defines a wide range of general-purpose APIs—such as Java APIs for the Java Class Library—and also includes the Java Language Specification and the Java Virtual Machine Specification. One of the most well-known implementations of Java SE is Oracle Corporations Java Development Kit. The platform was known as Java 2 Platform, Standard Edition or J2SE from version 1.2, until the name was changed to Java Platform, the SE is used to distinguish the base platform from the Enterprise Edition and Micro Edition platforms. The 2 was originally intended to emphasize the changes introduced in version 1.2. The naming convention has been changed several times over the Java version history, JSR59 was the umbrella specification for J2SE1.4 and JSR176 specified J2SE5.0. Java SE6 was released under JSR270, Java Platform, Enterprise Edition is a related specification that includes all the classes in Java SE, plus a number that are more useful to programs that run on servers as opposed to workstations. The Java Runtime Environment and Java Development Kit are the files downloaded and installed on a computer to run or develop Java programs. The Java package java. lang contains fundamental classes and interfaces closely tied to the language and this package contains 22 of 32 Error classes provided in JDK6. The main classes and interfaces in java. lang are, Object – the class that is the root of every class hierarchy, enum – the base class for enumeration classes. Class – the class that is the root of the Java reflection system, throwable – the class that is the base class of the exception class hierarchy. Error, Exception, and RuntimeException – the base classes for each exception type, thread – the class that allows operations on threads. String – the class for strings and string literals, stringBuffer and StringBuilder – classes for performing string manipulation. Comparable – the interface that allows generic comparison and ordering of objects, iterable – the interface that allows generic iteration using the enhanced for loop. Math and StrictMath – classes that provide basic math such as sine, cosine. The primitive wrapper classes that encapsulate primitive types as objects, the basic exception classes thrown for language-level and other common exceptions. Classes in java. lang are automatically imported into every source file and this package was added in J2SE1.2

7.
Distributed computing
–
Distributed computing is a field of computer science that studies distributed systems. A distributed system is a model in which components located on networked computers communicate and coordinate their actions by passing messages, the components interact with each other in order to achieve a common goal. Three significant characteristics of distributed systems are, concurrency of components, lack of a global clock, examples of distributed systems vary from SOA-based systems to massively multiplayer online games to peer-to-peer applications. A computer program that runs in a system is called a distributed program. There are many alternatives for the message passing mechanism, including pure HTTP, RPC-like connectors, Distributed computing also refers to the use of distributed systems to solve computational problems. In distributed computing, a problem is divided into many tasks, each of which is solved by one or more computers, which communicate with each other by message passing. The terms are used in a much wider sense, even referring to autonomous processes that run on the same physical computer. The entities communicate with each other by message passing, a distributed system may have a common goal, such as solving a large computational problem, the user then perceives the collection of autonomous processors as a unit. Other typical properties of distributed systems include the following, The system has to tolerate failures in individual computers. The structure of the system is not known in advance, the system may consist of different kinds of computers and network links, each computer has only a limited, incomplete view of the system. Each computer may know one part of the input. Distributed systems are groups of networked computers, which have the goal for their work. The terms concurrent computing, parallel computing, and distributed computing have a lot of overlap, the same system may be characterized both as parallel and distributed, the processors in a typical distributed system run concurrently in parallel. Parallel computing may be seen as a tightly coupled form of distributed computing. In distributed computing, each processor has its own private memory, Information is exchanged by passing messages between the processors. The figure on the right illustrates the difference between distributed and parallel systems, figure shows a parallel system in which each processor has a direct access to a shared memory. The situation is complicated by the traditional uses of the terms parallel and distributed algorithm that do not quite match the above definitions of parallel. The use of concurrent processes that communicate by message-passing has its roots in operating system architectures studied in the 1960s, the first widespread distributed systems were local-area networks such as Ethernet, which was invented in the 1970s

8.
Web service
–
A web service is a service offered by an electronic device to another electronic device, communicating with each other via the World Wide Web. Another common application offered to the end user may be a mashup, where a web server consumes several web services at different machines, the W3C defines a web service generally as, A web service is a software system designed to support interoperable machine-to-machine interaction over a network. Web services may use SOAP over HTTP protocol, allowing less costly interactions over the Internet than via proprietary solutions like EDI/B2B, besides SOAP over HTTP, web services can also be implemented on other reliable transport mechanisms like FTP. In a 2002 document, the W3C Web Services Architecture Working Group defined a Web Services Architecture, in this, It has an interface described in a machine-processable format. The term web service describes a way of integrating web-based applications using the XML, SOAP, WSDL. A web service is a method of communication between two electronic devices over a network and it is a software function provided at a network address over the web with the service always on as in the concept of utility computing. Many organizations use multiple systems for management. Different software systems often need to exchange data with other. The software system that requests data is called a service requester, whereas the system that would process the request. Different software may use different programming languages, and hence there is a need for a method of exchange that doesnt depend upon a particular programming language. Most types of software can, however, interpret XML tags, thus, web services can use XML files for data exchange. Rules for communication between different systems need to be defined, such as, How one system can request data from another system, which specific parameters are needed in the data request. What would be the structure of the data produced, what error messages to display when a certain rule for communication is not observed, to make troubleshooting easier. All of these rules for communication are defined in a file called WSDL, a directory called UDDI defines which software system should be contacted for which type of data. So when one software system needs one particular report/data, it would go to the UDDI, once the software system finds out which other system it should contact, it would then contact that system using a special protocol called SOAP. The service provider system would first validate the data request by referring to the WSDL file, a Web API is a development in web services where emphasis has been moving to simpler representational state transfer based communications. RESTful APIs do not require XML-based web service protocols to support their interfaces, Automated tools can aid in the creation of a web service. For services using WSDL, it is possible to automatically generate WSDL for existing classes or to generate a class skeleton given existing WSDL

9.
Concurrency (computer science)
–
In computer science, concurrency is the decomposability property of a program, algorithm, or problem into order-independent or partially-ordered components or units. This means that if the concurrent units of the program, algorithm, or problem are executed out-of-order or in partial order. This allows for execution of the concurrent units, which can significantly improve overall speed of the execution in multi-processor. The ensuing decades have seen a growth of interest in concurrency—particularly in distributed systems. Looking back at the origins of the field, what stands out is the role played by Edsger Dijkstra. Concurrent use of shared resources can be a source of indeterminacy leading to such as deadlocks. Concurrency theory has been a field of research in theoretical computer science. One of the first proposals was Carl Adam Petris seminal work on Petri Nets in the early 1960s, in the years since, a wide variety of formalisms have been developed for modeling and reasoning about concurrency. g. Some of these are based on passing, while others have different mechanisms for concurrency. The proliferation of different models of concurrency has motivated some researchers to develop ways to unify these different theoretical models, various types of temporal logic can be used to help reason about concurrent systems. Some of these logics, such as linear temporal logic and computational tree logic, others, such as action computational tree logic, Hennessy-Milner logic, and Lamports temporal logic of actions, build their assertions from sequences of actions. The principal application of these logics is in writing specifications for concurrent systems, concurrent programming encompasses programming languages and algorithms used to implement concurrent systems. The base goals of concurrent programming include correctness, performance and robustness, concurrent systems such as Operating systems and Database management systems are generally designed to operate indefinitely, including automatic recovery from failure, and not terminate unexpectedly. Because they use shared resources, concurrent systems in general require the inclusion of some kind of arbiter somewhere in their implementation, the use of arbiters introduces the possibility of indeterminacy in concurrent computation which has major implications for practice including correctness and performance. Some concurrent programming models include coprocesses and deterministic concurrency, in these models, threads of control explicitly yield their timeslices, either to the system or to another process. Tanenbaum, Andrew S. Van Steen, Maarten, a Practical Theory of Reactive Systems. Concurrency, State Models and Java Programming, concurrent Systems at The WWW Virtual Library Concurrency patterns presentation given at scaleconf

10.
Java Community Process
–
The Java Community Process, established in 1998, is a formalized mechanism that allows interested parties to develop standard technical specifications for Java technology. Anyone can become a JCP Member by filling a form available at the JCP website, JCP membership for organizations and commercial entities requires annual fees – but is free for individuals. The JCP involves the use of Java Specification Requests – the formal documents that describe proposed specifications, formal public reviews of JSRs take place before a JSR becomes final and the JCP Executive Committee votes on it. A final JSR provides an implementation that is a free implementation of the technology in source code form. A JSR describes the JCP itself, as of 2009, JSR215 describes the current version of the JCP. Some of the more visible JSRs include, The JCPs executive board has been characterized ***** as a rubber stamp organization since Oracle acquired Sun Microsystems. The Apache Software Foundation resigned its seat on the board in December 2010 because Oracle was unwilling to license the Technology Compatibility Kit for Apaches version of Java, JDK Enhancement Proposal Java Community Process home page List of all JSRs rated final List of all JSRs

11.
Oracle Corporation
–
Oracle Corporation is a multinational computer technology corporation, headquartered in Redwood Shores, California. In 2015 Oracle was the second-largest software maker by revenue, after Microsoft, larry Ellison co-founded Oracle Corporation in 1977 with Bob Miner and Ed Oates under the name Software Development Laboratories. Ellison took inspiration from the 1970 paper written by Edgar F. Codd on relational database management systems named A Relational Model of Data for Large Shared Data Banks and he heard about the IBM System R database from an article in the IBM Research Journal provided by Oates. Also derived from Codds theories, Ellison wanted to make Oracles product compatible with System R, SDL changed its name to Relational Software, Inc in 1979, then again to Oracle Systems Corporation in 1982, to align itself more closely with its flagship product Oracle Database. At this stage Bob Miner served as the senior programmer. In 1995, Oracle Systems Corporation changed its name to Oracle Corporation, officially named Oracle, but sometimes referred to as Oracle Corporation, part of Oracle Corporations early success arose from using the C programming language to implement its products. This eased porting to different operating systems, many of the products have been added to Oracles portfolio through acquisitions. Oracles E-delivery service provides generic downloadable Oracle software and documentation, Oracle Database Release 10, In 2004, Oracle Corporation shipped release 10g as the then latest version of Oracle Database. Release 11, Release 11g became the current Oracle Database version in 2007, Oracle Corporation released Oracle Database 11g Release 2 in September 2009. This version was available in four commercial editions—Enterprise Edition, Standard Edition, Standard Edition One, the licensing of these editions shows various restrictions and obligations that are considered complex. The Enterprise Edition, the most expensive of the Database Editions, has the fewest restrictions —, Oracle Corporation constrains the Standard Edition and Standard Edition One with more licensing restrictions, in accordance with their lower price. Release 12, Release 12c became available on July 1,2013, Oracle acquired Rdb in 1994 from Digital Equipment Corporation. Oracle has since made many enhancements to product and development continues as of 2008. Released in 2008, the Oracle Beehive collaboration software provides team workspaces, email, calendar, instant messaging, customers can use Beehive as licensed software or as software as a service. Oracle also sells a suite of business applications, users can access these facilities through a browser interface over the Internet or via a corporate intranet. The Social Engagement and Monitoring cloud provides the most effective and efficient responses across social, SEM is able to route correct responses to the right team, member, or customer-experience channel to ensure the best customer service. The analysis helps vendors to understand what is important to customers and it identifies trends, spikes, and anomalies to make real-time course corrections. It also can identify brand advocates, the SEM cloud identifies customer intention and interests by analyzing the common ways customers talk about a product or a service

12.
Java servlet
–
A Java servlet is a Java program that extends the capabilities of a server. Although servlets can respond to any types of requests, they most commonly implement applications hosted on Web servers, such Web servlets are the Java counterpart to other dynamic Web content technologies such as PHP and ASP. NET. Servlets are most often used to process or store a Java class in Java EE that conforms to the Java Servlet API, servlets could in principle communicate over any client–server protocol, but they are most often used with the HTTP protocol. Thus servlet is often used as shorthand for HTTP servlet, thus, a software developer may use a servlet to add dynamic content to a web server using the Java platform. The generated content is commonly HTML, but may be other such as XML. Servlets can maintain state in session variables across many server transactions by using HTTP cookies, to deploy and run a servlet, a web container must be used. A web container is essentially the component of a web server that interacts with the servlets, the web container is responsible for managing the lifecycle of servlets, mapping a URL to a particular servlet and ensuring that the URL requester has the correct access rights. The Servlet API, contained in the Java package hierarchy javax. servlet, defines the interactions of the web container. A Servlet is an object receives a request and generates a response based on that request. The basic Servlet package defines Java objects to represent servlet requests and responses, as well as objects to reflect the servlets configuration parameters, servlets may be packaged in a WAR file as a web application. Servlets can be generated automatically from JavaServer Pages by the JavaServer Pages compiler, the difference between servlets and JSP is that servlets typically embed HTML inside Java code, while JSPs embed Java code in HTML. A somewhat older usage is to use servlets in conjunction with JSPs in a pattern called Model 2, the current version of Servlet is 3.1. The Servlet1 specification was created by Pavni Diwanji while she worked at Sun Microsystems, starting with version 2.3, the specification was developed under the Java Community Process. JSR53 defined both the Servlet 2.3 and JavaServer Page 1.2 specifications, JSR154 specifies the Servlet 2.4 and 2.5 specifications. As of June 9,2015, the current version of the Servlet specification is 3.1, in his blog on java. net, Sun veteran and GlassFish lead Jim Driscoll details the history of servlet technology. James Gosling first thought of servlets in the days of Java. This was before what is now the Java Platform, Enterprise Edition was made into a specification, the advantages of using servlets are their fast performance and ease of use combined with more power over traditional CGI. Traditional CGI scripts written in Java have a number of disadvantages, When an HTTP request is made

13.
JavaServer Pages
–
JavaServer Pages is a technology that helps software developers create dynamically generated web pages based on HTML, XML, or other document types. Released in 1999 by Sun Microsystems, JSP is similar to PHP, ASP and Reacts JSX, to deploy and run JavaServer Pages, a compatible web server with a servlet container, such as Apache Tomcat or Jetty, is required. Architecturally, JSP may be viewed as an abstraction of Java servlets. JSPs are translated into servlets at runtime, therefore JSP is a Servlet, JSP can be used independently or as the view component of a server-side model–view–controller design, normally with JavaBeans as the model and Java servlets as the controller. This is a type of Model 2 architecture, the compiled pages, as well as any dependent Java libraries, contain Java bytecode rather than machine code. Like any other Java program, they must be executed within a Java virtual machine that interacts with the servers host operating system to provide an abstract, platform-neutral environment. JSPs are usually used to deliver HTML and XML documents, but through the use of OutputStream, the Web container creates JSP implicit objects like request, response, session, application, config, page, pageContext, out and exception. JSP Engine creates these objects during translation phase, JSP pages use several delimiters for scripting functions. %>, which encloses a JSP scriptlet, a scriptlet is a fragment of Java code that is run when the user requests the page. %> for expressions, where the scriptlet and delimiters are replaced with the result of evaluating the expression, Java code is not required to be complete or self-contained within a single scriptlet block. It can straddle markup content, provided that the page as a whole is syntactically correct, for example, any Java if/for/while blocks opened in one scriptlet must be correctly closed in a later scriptlet for the page to successfully compile. Content that falls inside a block of Java code is subject to that code. Content inside an if block will appear in the output when the if condition evaluates to true. Likewise, content inside a loop construct may appear multiple times in the output, the following would be a valid for loop in a JSP page, The output displayed in the users web browser would be, Counting to three, This number is 1. Version 2.0 of the JSP specification added support for the Expression Language, used to access data, in JSP2.1, it was folded into the Unified Expression Language, which is also used in JavaServer Faces. An example of EL Syntax, The value of variable in the object javabean is $, the JSP syntax add additional tags, called JSP actions, to invoke built-in functionality. Additionally, the technology allows for the creation of custom JSP tag libraries that act as extensions to the standard JSP syntax, some JSP containers support configuring how often the container checks JSP file timestamps to see whether the page has changed. Typically, this timestamp would be set to an interval during software development

14.
Java Server Faces
–
JavaServer Faces is a Java specification for building component-based user interfaces for web applications. It was formalized as a standard through the Java Community Process and is part of the Java Platform, JSF2 uses Facelets as its default templating system. Other view technologies such as XUL or plain Java can also be employed, in contrast, JSF1. x uses JavaServer Pages as its default templating system. JSF2.3 – Major features, search Expressions, extensionless URLs, bean validation for complete classes, push communication using WebSocket, JSF2.2 – Introduced new concepts like stateless views, page flow and the ability to create portable resource contracts. JSF2.1 – Maintenance release 2 of JSF2.0, only a very minor number of specification changes. JSF2.0 – Major release for ease of use, enhanced functionality, JSF1.2 – Many improvements to core systems and APIs. JSF1.0 – Initial specification released, based on a component-driven UI design-model, JavaServer Faces uses XML files called view templates or Facelets views. The FacesServlet processes requests, loads the appropriate view template, builds a component tree, processes events, and renders the response to the client. The state of UI components and other objects of scope interest is saved at the end of each request in a process called stateSaving, either the client or the server side can save objects and states. JSF is often used together with Ajax, a Rich Internet application technology, Ajax is a combination of technologies that make it possible to create rich user interfaces. The user interface components in Mojarra and Apache MyFaces were originally developed for HTML only and this has changed, however, Because JSF supports multiple output formats, Ajax-enabled components can easily be added to enrich JSF-based user interfaces. JSF2 includes support for graceful degradation when JavaScript is disabled in the browser and it reached its end-of-life in June 2016.0. This eliminates the life-cycle conflicts that existed with JSP, forcing workarounds by Java developers, Facelets allows easy component/tag creation using XML markup instead of Java code, the chief complaint against JSF1. x. Navigation has been simplified, removing the need for faces-config. xml navigation cases, page transitions can be invoked simply by passing the name of the desired View/Facelet. Addition of Partial State Saving and DOM updates are part of the built in standardized Ajax support, includes logical naming and versioning of resources. In their January 2014 Technology Radar publication, ThoughtWorks wrote, We continue to see teams run into trouble using JSF -- JavaServer Faces -- and are recommending you avoid this technology. Teams seem to choose JSF because it is a JEE standard without really evaluating whether the programming model suits them and we think JSF is flawed because it tries to abstract away HTML, CSS and HTTP, exactly the reverse of what modern web frameworks do. JSF, like ASP. NET webforms, attempts to create statefulness on top of the stateless protocol HTTP and we are aware of the improvements in JSF2.0, but think the model is fundamentally broken

15.
Java remote method invocation
–
The original implementation depends on Java Virtual Machine class-representation mechanisms and it thus only supports making calls from one JVM to another. The protocol underlying this Java-only implementation is known as Java Remote Method Protocol, in order to support code running in a non-JVM context, programmers later developed a CORBA version. The basic idea of Java RMI, the distributed garbage-collection protocol, the programmers of the original RMI API generalized the code somewhat to support different implementations, such as a HTTP transport. Additionally, the ability to pass arguments by value was added to CORBA in order to be compatible with the RMI interface, still, the RMI-IIOP and JRMP implementations do not have fully identical interfaces. RMI functionality comes in the package java. rmi, while most of Suns implementation is located in the sun. rmi package, Note that with Java versions before Java 5.0 developers had to compile RMI stubs in a separate compilation step using rmic. Version 5.0 of Java and beyond no longer require this step, jini offers a more advanced version of RMI in Java. It functions similarly but provides more advanced searching capabilities and mechanisms for distributed object applications, the following classes implement a simple client-server program using RMI that displays a message. RmiServer class — listens to RMI requests and implements the interface which is used by the client to invoke remote methods, rmiServerIntf interface — defines the interface that is used by the client and implemented by the server. RmiClient class — this is the client which gets the reference to the remote object living on the server, if the server object implemented java. io. Serializable instead of java. rmi. Remote, it would be serialized and passed to the client as a value. Before running this example, we need to make a file for the interface we used. For this task we have the RMI compiler - rmic Note, we make a file from the *. class file with the implementation of the remote interface. See the comment in the constructor above, Oracle Technology Network for Java Developers. Redwood Shores, CA, USA, Oracle Corporation, the Java RMI tutorial - a good starting point to learn RMI. Also check the Hello World in RMI the Java RMI online training - Very good for training JavaRMI and as reference The RMI page in the JDK docs java. rmi Wollrath, Ann, Riggs, Roger, Waldo, a Distributed Object Model for the Java System. Programming WebLogic RMI - an introduction to RMI in Oracle Weblogic

16.
Access control
–
Security, access control is the selective restriction of access to a place or other resource. The act of accessing may mean consuming, entering, or using, permission to access a resource is called authorization. Locks and login credentials are two mechanisms of access control. Geographical access control may be enforced by personnel, or with a such as a turnstile. There may be fences to avoid circumventing this access control, an alternative of access control in the strict sense is a system of checking authorized presence, see e. g. Ticket controller. A variant is exit control, e. g. of a shop or a country, the term access control refers to the practice of restricting entrance to a property, a building, or a room to authorized persons. Physical access control can be achieved by a human, through means such as locks and keys. Within these environments, physical key management may also be employed as a means of managing and monitoring access to mechanically keyed areas or access to certain small assets. Physical access control is a matter of who, where, an access control system determines who is allowed to enter or exit, where they are allowed to exit or enter, and when they are allowed to enter or exit. Historically, this was accomplished through keys and locks. When a door is locked, only someone with a key can enter through the door, mechanical locks and keys do not allow restriction of the key holder to specific times or dates. Mechanical locks and keys do not provide records of the key used on any specific door, when a mechanical key is lost or the key holder is no longer authorized to use the protected area, the locks must be re-keyed. Electronic access control uses computers to solve the limitations of mechanical locks, a wide range of credentials can be used to replace mechanical keys. The electronic access control system grants access based on the credential presented, when access is granted, the door is unlocked for a predetermined time and the transaction is recorded. When access is refused, the door locked and the attempted access is recorded. The system will monitor the door and alarm if the door is forced open or held open too long after being unlocked. When a credential is presented to a reader, the reader sends the information, usually a number, to a control panel. The control panel compares the number to an access control list, grants or denies the presented request

17.
JavaServer Faces
–
JavaServer Faces is a Java specification for building component-based user interfaces for web applications. It was formalized as a standard through the Java Community Process and is part of the Java Platform, JSF2 uses Facelets as its default templating system. Other view technologies such as XUL or plain Java can also be employed, in contrast, JSF1. x uses JavaServer Pages as its default templating system. JSF2.3 – Major features, search Expressions, extensionless URLs, bean validation for complete classes, push communication using WebSocket, JSF2.2 – Introduced new concepts like stateless views, page flow and the ability to create portable resource contracts. JSF2.1 – Maintenance release 2 of JSF2.0, only a very minor number of specification changes. JSF2.0 – Major release for ease of use, enhanced functionality, JSF1.2 – Many improvements to core systems and APIs. JSF1.0 – Initial specification released, based on a component-driven UI design-model, JavaServer Faces uses XML files called view templates or Facelets views. The FacesServlet processes requests, loads the appropriate view template, builds a component tree, processes events, and renders the response to the client. The state of UI components and other objects of scope interest is saved at the end of each request in a process called stateSaving, either the client or the server side can save objects and states. JSF is often used together with Ajax, a Rich Internet application technology, Ajax is a combination of technologies that make it possible to create rich user interfaces. The user interface components in Mojarra and Apache MyFaces were originally developed for HTML only and this has changed, however, Because JSF supports multiple output formats, Ajax-enabled components can easily be added to enrich JSF-based user interfaces. JSF2 includes support for graceful degradation when JavaScript is disabled in the browser and it reached its end-of-life in June 2016.0. This eliminates the life-cycle conflicts that existed with JSP, forcing workarounds by Java developers, Facelets allows easy component/tag creation using XML markup instead of Java code, the chief complaint against JSF1. x. Navigation has been simplified, removing the need for faces-config. xml navigation cases, page transitions can be invoked simply by passing the name of the desired View/Facelet. Addition of Partial State Saving and DOM updates are part of the built in standardized Ajax support, includes logical naming and versioning of resources. In their January 2014 Technology Radar publication, ThoughtWorks wrote, We continue to see teams run into trouble using JSF -- JavaServer Faces -- and are recommending you avoid this technology. Teams seem to choose JSF because it is a JEE standard without really evaluating whether the programming model suits them and we think JSF is flawed because it tries to abstract away HTML, CSS and HTTP, exactly the reverse of what modern web frameworks do. JSF, like ASP. NET webforms, attempts to create statefulness on top of the stateless protocol HTTP and we are aware of the improvements in JSF2.0, but think the model is fundamentally broken

18.
Computer cluster
–
A computer cluster consists of a set of loosely or tightly connected computers that work together so that, in many respects, they can be viewed as a single system. Unlike grid computers, computer clusters have each set to perform the same task. The components of a cluster are usually connected to each other through fast local area networks and they have a wide range of applicability and deployment, ranging from small business clusters with a handful of nodes to some of the fastest supercomputers in the world such as IBMs Sequoia. The desire to get more computing power and better reliability by orchestrating a number of low-cost commercial off-the-shelf computers has given rise to a variety of architectures, the computer clustering approach usually connects a number of readily available computing nodes via a fast local area network. g. Via a single system image concept, Computer clustering relies on a centralized management approach which makes the nodes available as orchestrated shared servers. It is distinct from other such as peer to peer or grid computing which also use many nodes. A computer cluster may be a simple system which just connects two personal computers, or may be a very fast supercomputer. A basic approach to building a cluster is that of a Beowulf cluster which may be built with a few computers to produce a cost-effective alternative to traditional high performance computing. An early project that showed the viability of the concept was the 133-node Stone Soupercomputer, the developers used Linux, the Parallel Virtual Machine toolkit and the Message Passing Interface library to achieve high performance at a relatively low cost. Although a cluster may consist of just a few personal computers connected by a simple network, greg Pfister has stated that clusters were not invented by any specific vendor but by customers who could not fit all their work on one computer, or needed a backup. Pfister estimates the date as some time in the 1960s, the first production system designed as a cluster was the Burroughs B5700 in the mid-1960s. This allowed up to four computers, each with one or two processors, to be tightly coupled to a common disk storage subsystem in order to distribute the workload. Unlike standard multiprocessor systems, each computer could be restarted without disrupting overall operation, the first commercial loosely coupled clustering product was Datapoint Corporations Attached Resource Computer system, developed in 1977, and using ARCnet as the cluster interface. Clustering per se did not really take off until Digital Equipment Corporation released their VAXcluster product in 1984 for the VAX/VMS operating system, the ARC and VAXcluster products not only supported parallel computing, but also shared file systems and peripheral devices. The idea was to provide the advantages of parallel processing, while maintaining data reliability, two other noteworthy early commercial clusters were the Tandem Himalayan and the IBM S/390 Parallel Sysplex. Within the same frame, while computer clusters used parallelism outside the computer on a commodity network. Following the success of the CDC6600 in 1964, the Cray 1 was delivered in 1976, while early supercomputers excluded clusters and relied on shared memory, in time some of the fastest supercomputers relied on cluster architectures. Computer clusters may be configured for different purposes ranging from general purpose business needs such as web-service support, in either case, the cluster may use a high-availability approach

19.
Fault-tolerant design
–
Fault tolerance is the property that enables a system to continue operating properly in the event of the failure of some of its components. Fault tolerance is particularly sought after in high-availability or life-critical systems, the ability of maintaining functionality when portions of a system break down is referred to as graceful degradation. A fault-tolerant design enables a system to continue its operation, possibly at a reduced level, rather than failing completely. That is, the system as a whole is not stopped due to either in the hardware or the software. However, if the consequences of a system failure are catastrophic, or the cost of making it sufficiently reliable is very high, a better solution may be to use some form of duplication. In any case, if the consequence of a failure is so catastrophic. This is similar to recovery but can be a human action if humans are present in the loop. A highly fault-tolerant system might continue at the level of performance even though one or more components have failed. For example, a building with a electrical generator will provide the same voltage to wall outlets even if the grid power fails. In computers, a program might fail-safe by executing a graceful exit in order to prevent data corruption after experiencing an error, a similar distinction is made between failing well and failing badly. Fail-deadly is the strategy, which can be used in weapon systems that are designed to kill or injure targets even if part of the system is damaged or destroyed. A system that is designed to experience graceful degradation, or to fail soft operates at a level of performance after some component failures. In fault-tolerant computer systems, programs that are considered robust are designed to continue operation despite an error, exception, or invalid input, software brittleness is the opposite of robustness. Likewise, a fail-fast component is designed to report at the first point of failure, rather than allow downstream components to fail and this allows easier diagnosis of the underlying problem, and may prevent improper operation in a broken state. If each component, in turn, can continue to function when one of its subcomponents fails, this will allow the total system to continue to operate as well. Using a passenger vehicle as an example, a car can have run-flat tires, the punctured run-flat tire may be used for a limited time at a reduced speed. Redundancy is the provision of functional capabilities that would be unnecessary in a fault-free environment and this can consist of backup components that automatically kick in should one component fail. For example, large trucks can lose a tire without any major consequences

20.
Computer security
–
A vulnerability is a system susceptibility or flaw. Many vulnerabilities are documented in the Common Vulnerabilities and Exposures database, an exploitable vulnerability is one for which at least one working attack or exploit exists. They may exist for a number of reasons, including by original design or from poor configuration, denial of service attacks are designed to make a machine or network resource unavailable to its intended users. An unauthorized user gaining physical access to a computer is most likely able to copy data from it. They may also compromise security by making operating system modifications, installing software worms, keyloggers, even when the system is protected by standard security measures, these may be able to be by-passed by booting another operating system or tool from a CD-ROM or other bootable media. Disk encryption and Trusted Platform Module are designed to prevent these attacks, eavesdropping is the act of surreptitiously listening to a private conversation, typically between hosts on a network. For instance, programs such as Carnivore and NarusInsight have been used by the FBI, spoofing, in general, is a fraudulent or malicious practice in which communication is sent from an unknown source disguised as a source known to the receiver. Spoofing is most prevalent in communication mechanisms lack a high level of security. Tampering describes a malicious modification of products, so-called Evil Maid attacks and security services planting of surveillance capability into routers are examples. Privilege escalation describes a situation where an attacker with some level of restricted access is able to, without authorization, elevate their privileges or access level. So for example a computer user may be able to fool the system into giving them access to restricted data. Phishing is the attempt to acquire sensitive information such as usernames, passwords, phishing is typically carried out by email spoofing or instant messaging, and it often directs users to enter details at a fake website whose look and feel are almost identical to the legitimate one. Preying on a victims trust, phishing can be classified as a form of social engineering and this is done using multiple transparent or opaque layers. The attacker is basically hijacking the clicks meant for the top level page and routing them to some other irrelevant page, a similar technique can be used to hijack keystrokes. Social engineering aims to convince a user to disclose secrets such as passwords, card numbers, etc. by, for example, impersonating a bank, a common scam involves fake CEO emails sent to accounting and finance departments. In early 2016, the FBI reported that the scam has cost US businesses more than $2bn in about two years, Computer security is critical in almost any industry which uses computers. However, computers can be protected through well built software and hardware, by having strong internal interactions of properties, software complexity can prevent software crash and security failure. In-store payment systems and ATMs have also been tampered with in order to gather customer account data, computers control functions at many utilities, including coordination of telecommunications, the power grid, nuclear power plants, and valve opening and closing in water and gas networks

21.
Free software
–
The right to study and modify software entails availability of the software source code to its users. This right is conditional on the person actually having a copy of the software. Richard Stallman used the existing term free software when he launched the GNU Project—a collaborative effort to create a freedom-respecting operating system—and the Free Software Foundation. The FSFs Free Software Definition states that users of software are free because they do not need to ask for permission to use the software. Free software thus differs from proprietary software, such as Microsoft Office, Google Docs, Sheets, and Slides or iWork from Apple, which users cannot study, change, freeware, which is a category of freedom-restricting proprietary software that does not require payment for use. For computer programs that are covered by law, software freedom is achieved with a software license. Software that is not covered by law, such as software in the public domain, is free if the source code is in the public domain. Proprietary software, including freeware, use restrictive software licences or EULAs, Users are thus prevented from changing the software, and this results in the user relying on the publisher to provide updates, help, and support. This situation is called vendor lock-in, Users often may not reverse engineer, modify, or redistribute proprietary software. Other legal and technical aspects, such as patents and digital rights management may restrict users in exercising their rights. Free software may be developed collaboratively by volunteer computer programmers or by corporations, as part of a commercial, from the 1950s up until the early 1970s, it was normal for computer users to have the software freedoms associated with free software, which was typically public domain software. Software was commonly shared by individuals who used computers and by manufacturers who welcomed the fact that people were making software that made their hardware useful. Organizations of users and suppliers, for example, SHARE, were formed to exchange of software. As software was written in an interpreted language such as BASIC. Software was also shared and distributed as printed source code in computer magazines and books, in United States vs. IBM, filed January 17,1969, the government charged that bundled software was anti-competitive. While some software might always be free, there would henceforth be an amount of software produced primarily for sale. In the 1970s and early 1980s, the industry began using technical measures to prevent computer users from being able to study or adapt the software as they saw fit. In 1980, copyright law was extended to computer programs, Software development for the GNU operating system began in January 1984, and the Free Software Foundation was founded in October 1985

Free software or libre software is computer software distributed under terms that allow users to run the software for …

Example of a modern free software operating system running some representative applications. Shown are the Xfce desktop environment, the Firefox web browser, the Vim text editor, the GIMP image editor, and the VLC media player.

A web service is a service offered by an electronic device to another electronic device, communicating with each other …

Web services architecture: the service provider sends a WSDL file to UDDI. The service requester contacts UDDI to find out who is the provider for the data it needs, and then it contacts the service provider using the SOAP protocol. The service provider validates the service request and sends structured data in an XML file, using the SOAP protocol. This XML file would be validated again by the service requester using an XSD file.