m WebSphere
Key Points
References
Key Concepts
Why Liberty?
lower cost simpler to run >>> consider Liberty license costs vs OpenLiberty ( no license fee ) ( different support models !! )
Features comparisons on WebSphere and Liberty
https://www.ibm.com/docs/en/was-liberty/base?topic=management-liberty-features
Liberty missing some JEE EJB, batch, JMS and messaging features - designed for REST apis but not messaging
Liberty’s runtime is very compact and lightweight, making it particularly well-suited for virtualized infrastructure and cloud computing, for lightweight containers, and also for devices in the Internet of Things.
Liberty has Docker images
Micro profile API
- https://openliberty.io/docs/latest/reference/microprofile-api.html
MicroProfile OpenAPI is a MicroProfile community programming model for the OpenAPI specification. MicroProfile OpenAPI helps you to generate structured documentation from your JAX-RS applications.
Other developers need relevant information to build an application that communicates with the REST API of your application. MicroProfile OpenAPI facilitates this communication by generating human and machine-readable documentation on a simple interface that doesn’t require access to the source code. You can implement MicroProfile OpenAPI for Open Liberty by enabling the MicroProfile OpenAPI feature.
code-first api docs
n the code-first approach, a developer can generate documentation of the REST API from the source code. The reference document that is produced lists all the API endpoints with descriptions of how to use them. Alternatively,
design-first api docs
in the design-first approach, you can include a pre-generated OpenAPI document that was written separately from the code. The JAX-RS framework handles basic API generation for JAX-RS annotations and generates a skeleton OpenAPI treemap. You can use this treemap as a starting point and augment it with annotations and code to produce a complete OpenAPI document. Additionally, you can use this manually created documentation to generate stubs, or testable versions of code modules, such as client libraries for the API.
https://openliberty.io/docs/latest/reference/javadoc/microprofile-5.0-javadoc.html
OpenLiberty features
features are modules loaded to server to keep it tailored to use cases - not all JEE
fits with Docker
zero migration guarantee on new releases for configurations
can build pipelines and reactive messaging features that can be added in server.xml ( not in default microprofile )
pipeline processing
- shared context across threads running synch or asynch
reactive messaging
- integrates with Kafka, dbs, JMS
dev mode - mvn liberty:dev // creates dynamic recompiles
microshed testing – create microservices in Docker add on // test mode only now
use jwt or openapi
postgres SQL in jpa now too
can query LIberty derby admini db to see what is running now as config
JEE Features in Liberty
Jakarta EE Platform
The Jakarta EE Platform defines a standard platform for hosting Jakarta EE applications.
Jakarta EE Web Profile
The Jakarta EE Web Profile defines a profile of the Jakarta EE Platform specifically targeted at web applications.
Jakarta Annotations
Jakarta Annotations defines a collection of annotations representing common semantic concepts that enable a declarative style of programming that applies across a variety of Java technologies.
Jakarta Authentication
Jakarta Authentication defines a general low-level SPI for authentication mechanisms, which are controllers that interact with a caller and a container's environment to obtain the caller's credentials, validate these, and pass an authenticated identity (such as name and groups) to the container.
Jakarta Authorization
Jakarta Authorization defines a low-level SPI for authorization modules, which are repositories of permissions facilitating subject based security by determining whether a given subject has a given permission, and algorithms to transform security constraints for specific containers (such as Jakarta Servlet or Jakarta Enterprise Beans) into these permissions.
Jakarta Batch
Jakarta Batch specifies a Java API plus an XML-based job specification language (JSL), which lets you compose batch jobs in XML from reusable Java application artifacts and conveniently parameterize different executions of a single job.
Jakarta Bean Validation
Jakarta Bean Validation provides an object level constraint declaration and validation facility for the Java application developer, as well as a constraint metadata repository and query API.
Jakarta Concurrency
Jakarta Concurrency provides a specification for using concurrency from application components without compromising container integrity while still preserving the Jakarta EE platform's fundamental benefits.
Jakarta Connectors
The Jakarta Connectors specification defines a standard architecture for Jakarta EE application components to connect to Enterprise Information Systems.
Jakarta Contexts and Dependency Injection
Jakarta Contexts and Dependency Injection defines a powerful set of complementary services that help to improve the structure of application code.
Jakarta Debugging Support for Other Languages
Jakarta Debugging Support for Other Languages provides a mechanism by which programs executed under the Java virtual machine but written in languages other than the Java programming language, can be debugged with references to the original source (for example, source file and line number references).
Jakarta Dependency Injection
Jakarta Dependency Injection specifies a means for obtaining objects in such a way as to maximize reusability, testability and maintainability compared to traditional approaches such as constructors, factories, and service locators (e.g., JNDI).
Jakarta Deployment
Jakarta Deployment defines standard APIs that will enable any deployment tool that uses the deployment APIs to deploy any assembled application onto a Jakarta EE compatible platform.
Jakarta Enterprise Beans
Jakarta Enterprise Beans defines an architecture for the development and deployment of component-based business applications.
Jakarta Enterprise Web Services
This specification defines the Web Services for Jakarta EE architecture.
Jakarta Expression Language
Jakarta Expression Language defines an expression language for Java applications.
Jakarta Interceptors
Jakarta Interceptors defines a means of interposing on business method invocations and specific events—such as lifecycle events and timeout events—that occur on instances of Jakarta EE components and other managed classes.
Jakarta JSON Binding
Jakarta JSON Binding defines a binding framework for converting Java(R) objects to and from JSON documents.
Jakarta JSON Processing
Jakarta JSON Processing defines a Java(R) based framework for parsing, generating, transforming, and querying JSON documents.
Jakarta Mail
Jakarta Mail defines a platform-independent and protocol-independent framework to build mail and messaging applications.
Jakarta Managed Beans
Jakarta Managed Beans defines a set of basic services for container-managed objects with minimal requirements, otherwise known under the acronym POJOs (Plain Old Java Objects).
Jakarta Management
Jakarta Management defines a standard management model for exposing and accessing the management information, operations, and parameters of the Jakarta EE Platform components.
Jakarta Messaging
Jakarta Messaging describes a means for Java applications to create, send, and receive messages via loosely coupled, reliable asynchronous communication services.
Jakarta Persistence
Jakarta Persistence defines a standard for management of persistence and object/relational mapping in Java(R) environments.
Jakarta RESTful Web Services
Jakarta RESTful Web Services provides a foundational API to develop web services following the Representational State Transfer (REST) architectural pattern
Jakarta Security
Jakarta Security defines a standard for creating secure Jakarta EE applications in modern application paradigms.
Jakarta Server Faces
Jakarta Server Faces defines an MVC framework for building user interfaces for web applications, including UI components, state management, event handing, input validation, page navigation, and support for internationalization and accessibility.
Jakarta Server Pages
Jakarta Server Pages defines a template engine for web applications that supports mixing of textual content (including HTML and XML) with custom tags, expression language, and embedded Java code, that gets compiled into a Jakarta Servlet.
Jakarta Servlet
Jakarta Servlet defines a server-side API for handling HTTP requests and responses.
Jakarta Standard Tag Library
Jakarta Standard Tag Library represents a set of tags to simplify the Jakarta Server Pages development.
Jakarta Transactions
Jakarta Transactions defines a standard that allows the demarcation of transactions and the transactional coordination of XA-aware resource managers as described in the X/Open XA-specification and mapped to the Java SE XAResource interface within Java applications.
Jakarta WebSocket
Jakarta WebSocket defines a API for Server and Client Endpoints for the WebSocket protocol (RFC6455).
Jakarta XML RPC
Jakarta XML-based RPC defines consistent Java APIs for using XML based RPC standards.
Jakarta XML Registries
Jakarta XML Registries describes Java API’s designed specifically for an open and interoperable set of registry services that enable sharing of information between interested parties. The shared information is maintained as objects in a compliant registry. All access to registry content is exposed via the interfaces defined for the Registry Services.
Potential Value Opportunities
Potential Challenges
Candidate Solutions
Step-by-step guide for Example
sample code block