This page is consists of two main topics: Application
Frameworks and Integration
Frameworks.
Application
Framework is a set of common software routines (e.g. Jakarta Project
creates and maintains open source software for the Java platform under the ASF) that provides
a foundation structure
for developing an application. Frameworks take the tedium out of writing all the program
code for an application from scratch.
Object-oriented application frameworks are the norm today, are
structured as a class library.
Object Oriented
framework consists of a set of classes that work together to solve a family of
related problems.
Programmers can use inheritance and
delegation to extend the framework. Examples are RogueWave
Tools.h++, Model-View Controller (MVC), Microsoft Foundation Classes (MFC).
There are also frameworks geared to specific purposes (below table shows Specialized
Application Frameworks); for example, a framework for a content management
system (CMS) would include the infrastructure for developing Web e-commerce,
document maintenance and interactive user activities such as blogs and wikis (see Joomla!).
See also some modern web technologies, like: Angular, Node.Js,
React.js, Bootstrap, Gulp and
Grunt,
Python Frameworks, REST Django and other
web
technologies. See also:
Best Java
Frameworks,
Top 10 Development Frameworks
and list of below items.
Frameworks Grouped by Thematically
Frameworks can be grouped thematically by categorizing them based on the primary issues,
ideas, or subjects they address, such as security, data access, etc. Thematic analysis
provides a structured method to identify key themes in data
and then organizing frameworks or insights around these themes to make sense of complex
information
|
|
|
|
|
|
Remark
Year by year new technologies (languages, frameworks and libraries, etc.) are evolving
for software development.
In such a rapidly evolving field, where technology is in a state
of constant change,
the ability to quickly learn and adopt a new technology
effectively
is
a desirable skill for a technology expert.
Technologies which are mentioned below are worth exploring.
But choose the one which is still active or new and fulfills
your needs.
Some dormant or deprecated ones are mentioned only for a reference or for comparison.
Model View Controller
Model View
Controller (MVC) is
an architecture for building applications that separate the data (model) from the user interface (view) and the processing (controller). Providing a programming interface between the data
and the processing has been a primary concept in information technology for decades. MVC is
widely used in Web-based application frameworks.
In practice, MVC views and controllers are often combined into a single object because they
are closely related. For example, the
controller code validates a request for data and causes it to be returned in a view.
View-controller objects are tied to only one model; however, a model can have many
view-controller objects associated with it.
Implementations of MVC as Web-based
Frameworks
Web
application frameworks (e.g. Struts, Spring MVC are examples of Implementaion of MVC) are
software tools that are commonly used to aid in the creation and management of various types
of online applications. A web application framework can involve designing and launching
pages for a website or provisioning various applications to provide a wide range of web
services to consumers. The framework tends to include all the elements needed to accomplish
the desired tasks, thus eliminating the need to secure the necessary tools from different
sources..
There are numerous JAVA FRAMEWORKS either in development or in use. Many of these frameworks
are built on top of, or borrow elements from the Java
EE platform or Eclipse etc.
- Spring MVC -
defines strategy interfaces for all of the responsibilities which must be
handled by a modern request-based framework.
See more:
Spring MVC,
Spring in Action 3rd Edition
- Webwork -
is based on a concept called "Pull HMVC" (Pull Hierarchical MVC -
learn more).
It spuns off from Apache Struts 1.
- Struts1, Struts2 -
is the implementation of MVC design pattern for the JSP
See more:
About Apache
Struts,
Struts2 tutorial
- JSF -
simplifies development by providing a component-centric approach to
developing Java Web user interfaces.
See more:
About,
MAJORRA,
Tutorial,
JSF 2.0,
RichFaces,
MyFaces,
Facelets,
2
- Tapestry -
reconceptualizes web application development in terms of objects, methods
and properties instead of URLs and query parameters. Tapestry is an
alternative to scripting environments such as JavaServer Pages or
Velocity.
|
|
Comparision of web frameworks:
list of other
java web frameworks,
Comparing,
Struts1 and Struts2,
Comparison wiki,
Comparison 1,
Comparison 2.
Spring and EJB Framework ⇧
In an enterprise application, business logic forms the basis of transforming the persisted data.
That is the reason why the business logic layer is considered the most important layer of
any enterprise application. Typically, the Java Enterprise Edition (JEE) component
that was
used to implement business logic was Enterprise Java Beans (EJB). However, EJBs are
heavy weight components that require application servers to
run.
XDoclet - Attribute-Oriented Programming:
XDoclet -
About
This EJB was the scenario before the Spring
Framework came into the picture. The Spring Framework
provides a lightweight container to run the objects
implementing business logic. In other words, Spring Framework-based business objects do not
require an application server to run. Spring Framework is "An open-source layered
Java/J2EE application framework having a light-weight container implementing Inversion-of-Control and Aspect Oriented Programming." The key
points here are "layered application framework" and "Inversion of
Control and Aspect Oriented Programming." See also Continuous integration ( CI ).
Spring Boot and
Microservices⇧
Spring also owns some disadvantages (see pros-and-cons) like increased project size due to
dependencies and its management, complex configuration and debugging.
Spring Boot
helps developers
build
applications with ease and with far less toil than other
competing paradigms. Embedded web servers, auto-configuration, and
“fat jars” help you get
started quickly, and innovations like LiveReload in Spring
DevTools mean developers can
iterate faster than ever before.
Microservice architectures are
the ‘new normal’. Building small, self-contained, ready to
run applications can bring great flexibility and added resilience to your code.
Microservice architecture is not complete without Spring Cloud
‒ easing administration and boosting your fault-tolerance.
Developing distributed systems can be challenging, but Spring Cloud provides tools to
quickly build some of the common patterns in distributed systems (e.g. configuration
management, service discovery, circuit breakers, intelligent routing, micro-proxy,
controlbus).
- Spring
Boot
(INITIALIZR) -
is Spring's convention-over-configuration solution for creating stand-alone,
production-grade Spring-based Applications that you can 'just run' as a
microservice.
Building an Application,
baeldung,
tutorialspoint,
geeksforgeeks,
callicoder,
spring-vs-spring-boot,
2,
Building web apps. with Spring Boot and Kotlin
Sample Spring(boot) apps:
Pet Clinic
Community,
PetClinic Repo
- Configuration,
OAuth2 -
application configuration options that are present in Spring Boot.
See more:
Application Configuration,
Autoconfiguration classes,
Modularization,
Spring Security OAuth,
authorizing via linkedin, facebook, twitter
- Microservice
(with
Spring Boot,
2
Dropwizard,
WildFly Swarm,
top 5 microservice frameworks
)
is an architectural style that structures an application as a collection of
services.
See more:
GitHub SP,
Dropwizard,
Java Microservices,
REST and Microservices
Sample microservices:
spring-petclinic-microservices,
spring-petclinic-cloud
|
Web Service Frameworks in Java ⇧
What is a Web Service?, What is a
REST?
A Web service (Java EE Web service)
is a method of communication between two electronic devices over World Wide Web. A web
service is a software function provided at a network address over the web or the cloud; it
is a service that is "always on" as in the concept of utility computing.
More about Web Services:
webservicex.net,
Specification,
WML ,
WML Script,
RSS,
Tutor
ial,
Apache WS,
Java Web Services
REST
(REpresentational State Transfer)
is an architectural style, and an approach to communications that is often used in the
development of Web services. The use of REST is often preferred over the more heavyweight
SOAP (Simple Object Access Protocol) style because REST does not leverage as much bandwidth,
which makes it a better fit for use over the Internet.
Building
RESTful Web Services with JAX-RS,
RESTful
Web Services
See also:
• Java Web Services
• XML Usage in Web Applications
• XML Processing (JAXP) and
JAXB
• Web Toolkit
• RESTful Micro Frameworks,
• Microservices with Spring,
• REST services and microservices
- Apache
Axis -
is 3rd generation of Apache SOAP (IBM SOAP4J). Apache
Axis2 - is more efficient, more modular and more XML-oriented than
Axis.
See more:
About Axis2,
Tutorial, Axis,
Guide
- Metro -
the third generation Web services engine is more efficient, more modular and
more XML-oriented than Axis, see
Glassfish Metro
-
Jersey (JAX-RS) is
a RESTful WS
reference implementation
See more:
Tutorial,
REST with Spring
- ORDS
(more) -
Oracle REST Data Services makes it easy to develop modern REST interfaces
for relational data in the Oracle Database & NoSQL.
See more:
Learn,
APEX Listener,
docs ,
Python Loader
|
- Apache
CXF -
is an open source (web) services framework. CXF helps you build and develop
services using frontend programming APIs, like JAX-WS.
See more:
About,
JAX-WS Tutorial
- WSIT -
is for developing the next-generation of web service technologies, provides
Web Services Interoperability Technologies (
WSIT) between Java EE and .NET web services in a
SOA.
- Django REST
- Python -
Django is a high-level Python Web framework that encourages rapid
development and clean, pragmatic design.
See:
Co
je Django?,
use in Postgres,
Django
|
Comparision Web service frameworks:
List of WS,
Open
Source Web Services Tools in Java,
Web
services,
Framework comparisions, Comparison
Persistence Frameworks in Java
Java persistence evolved from rudimentary JDBC
and the complex EJB 2 entity beans to the
standardized Java Persistence API (JPA) in 2006,
which drew from the open-source Hibernate
framework. Following this, JPA was renamed Jakarta Persistence in 2019 after
the Java EE
project moved to the Eclipse Foundation, continuing its evolution with versions like Jakarta
Persistence 3.1 and 3.2 under the new namespace jakarta.persistence.
See list of
Java Persistence
Frameworks
Modern Trends:
Spring Data (since
2011): Introduced higher-level abstractions for repository-based access,
simplifying development. Year by year evolving to keep adding new improvements.
Jakarta Data: Evolving from Java EE, it further simplifies data access.
Challenges: Despite advancements, challenges remain, including performance overhead
from
data conversions and the complexity of managing object graphs and schema migrations
- Hibernate (implementing JPA) -
is a solution for OR mapping and a persistence management solution or
persistent layer.
See more:
About,
Tutorialspoint,
Tutor2,
Tips and Tricks,
JPA with Hibernate
- Oracle
TopLink -
implements JPA. EclipseLink is based on the TopLink's 11g code base.
TopLink will include EclipseLink as well as the next major release of Oracle AS.
See more:
About,
Oracle TopLink,
EclipseLink,
JPA 2.0 with EclipseLink
- JPA - provides POJO standard and OR mapping for data
persistence among apps.
JPA EntityManager vs. Hibernate Session,
JPA 2.1 Impl.
See more:
Open Source Persistence Frameworks in Java,
JSR 338 -
JPA 2.1,
Java Persistence API,
Java EE Technologies
|
|
See also
• SQL Tutorial
• Database Management Systems
(DBMS)
• Object Relational (OR) Mapping
Java Presentation Frameworks ⇧
- iText -
is a library that contains classes to generate documents
See more:
About,
Tutorial,
iText
Posts,
Java PDF Creation,
repo
- POI -
a project that provides Java libraries for reading and writing MS Office
files, see
Home,
Working with MS Excel in Java,
Word Processing in Java
- PDFBox -
A Java class library for parsing PDF documents including PDF to text
extraction, merge documents, document decryption.
About pdfbox,
Guide
- docx4j -
is a Java library for creating and manipulating Microsoft Open XML (Word
docx, Powerpoint pptx, and Excel xlsx) files, e.g. ETRA 2011 usage:)
Office Open XML,
MS XML,
Simple
.docx,
Creation,
Not same:
xml,
OpenOffice
- Crystal Reports -
Windows-based report writer, that
allows a programmer to create reports from a variety of data sources
See more:
About,
MS
|
- Apache FOP (
Formatting
Object Processor ) is a Java based print formatter based on
the
XSL-FO
(XSL-Formatting Object) standard.
-
BIRT
-
Business Intelligence and Reporting Tools
provides reporting and business intelligence capabilities for rich client
and web applications:
Home,
Birt Tutorial
- JFree
Chart -
is a free Java class library for generating charts, including: pie charts,
Gantt charts, wafer map charts
See more:
About,
Apply
- JasperReports - has the ability to deliver rich
content onto the screen, to the printer or into PDF, HTML, XLS, CSV and XML
files.
See more:
About,
Tutorialspoint
|
Comparision reporting frameworks:
Charting
and Reporting Tools,
More Tutorials,
DocFlex,
PDF and Postscript
Intelligent Agent Framework
There is growing interest in using intelligent software agents
for a variety of tasks, including navigating and retrieving information from the Internet
and from databases, online shopping activities, user authentication, negotiation for
resources, and decision making, see also Artificial Intelligence.
Testing Frameworks in Java ⇧
See more Open Source Testing Frameworks in Java here
- JUnit -
is a regression testing framework written by Erich Gamma and Kent Beck.
About,
Tutorial,
Tutorialspoint,
JUnit3,
JUnit 4.x,
Matchers
TestNG -
is a testing framework inspired from JUnit and NUnit but introducing some
new functionalities that make it more powerful and easier to use, such as: -
JSR 175 Annotations:
Home,
Guide,
TestNG Tutorial
- Hamcrest -
is a framework for writing matcher objects allowing ‘match’ rules to be
defined declaratively,
see:
hamcrest-guide,
Matchers,
by vogella
- EasyMock -
provides Mock Objects for interfaces in JUnit tests by generating them on
the fly using Java's proxy mechanism
See more:
About,
EasyMock,
JUnit+EasyMock,
tutorialspoint
JMockit -
is: a Java framework for mocking objects in tests (you can use it for both
JUnit and TestNG ones)
See more:
Home,
Advanced Usage
Mockito
-
is a mocking framework, JAVA-based library that is used for effective unit
testing of JAVA applications.
See more:
mockito-series,
Tutorial,
Home,
tutorialspoint
- XMLUnit -
provides two JUnit extension classes, XMLAssert and XMLTestCase, and a set
of supporting classes
See more:
About,
mvn-artifact,
Article
- HtmlUnit
-
is a java unit testing framework for testing web based applications. It is
similar in concept to httpunit but is very different in implementation.
HttpUnit models the http protocol so you deal with request and response
objects.
See more:
About,
Article
|
- Spock - is a Java
testing framework capable of
handling the complete life cycle of a computer program.
See:
wiki,
repo,
tests-with-spock,
groovy-spock
- DbUnit -
is a JUnit extension (also usable with Ant) targeted for database-driven
projects that, puts your database into a known state between test runs. See:
DB
Testing,
for Database testing,
Spring Test DBUnit
- UISpec4J -
is an Open Source functional and/or unit testing framework for
Swing-based
Java applications, built on top of the JUnit test harness.
Marathon
(home) -
is a testing framework for GUI applications developed using Java/Swing.
Marathon composes of recorder, runner and editor.
- Apache
JMeter -
Java desktop application designed to load test functional behavior and
measure performance. But it was originally designed for testing Web
Applications.
See:
About,
best-tools,
testguild,
JMeter vs The Grinder
- Spring(Boot) Testing - provides a number of
utilities and annotations to help when testing your application.
See:
mvc test,
web
test,
spring-boot-testing,
Integration Test
Cactus -
is for unit testing server-side java code (Servlets,
EJBs, Tag Libs, Filters, :)), see also: Cactus Integration
|
More Testing tools:
Test Automation,
2,
Top 10,
Testing Tools in
Java,
Testing,
JWebUnit,
SELENIUM,
Compare1,
Test Framework Comparison,
Testing FAQ,
Unitils
Java Logging Frameworks
See more Open Source Logging Frameworks in Java here
|
|
|
Comparision of logging frameworks:
Logging Tools and
Frameworks,
Other platforms,
Logging Dependencies in Spring
Java Security Frameworks
in Java
⇧
See also:
Java Security Technology and
Computer Security and
Cryptography,
Java MD5
Hashing,
Other Security
Tools
A workflow engine
(e.g. jBPM, iProcess, etc.) is a software application that manages and executes modeled
computer processes. A workflow approach to analyzing and managing a business process can be combined with an
object-oriented programming approach, which tends to focus on documents and data.
A business rules engine
(e.g. Drools, etc., more about BRE) is a software system that executes one or more business rules
in a runtime production environment.
List of other Engines:
Top 10 java-workflow-engine,
Open Source
Workflow Engines in Java and
Open Source Rule
Engines in Java
More on:
• Open
Source Build Systems in Java
• Source
Control Tools in Java,
• Software Management
• Project Health Tools
- Ant -
is a software tool for automating software build processes. It uses XML to describe the
build process and its dependencies.
See more:
About,
Ant
- Usage,
Tutorialspoint,
Tutorial
- Maven -
is a Java project management and project comprehension tool. Maven is based on the
concept of a project object model (POM).
See more:
About,
Skinny WARs,
Tutorialspoint,
vimp,
in Eclipse ,
Maven Overlays,
3,
excl-ear,
Bill of Materials use
BOM (svn
-list -R -v),
maven-bom,
2,
Spring Maven
BOM
- Gradle -
is a build automation tool for multi-language software development.
It manages tasks like compilation, packaging, testing, deployment, and publishing.
Supported languages include Java (as well as JDK-based languages Kotlin, Groovy, Scala),
C/C++, and JavaScript.
Home,
Tutorial,
Gradle Plugin,
spring
boot+gradle
- Ivy -
is a free java based dependency manager, with powerful features such as transitive
dependencies, ant integration, maven repository compatibility, continuous integration,
html reports and many more
See more:
About,
Tutorial
- Version control software, sometimes called SCM (Source
Code Management), helps you manage a software project.
It provides a common repository that stores the code to be shared and more. See:
Git -
is a free and open
source distributed(de-centralized) version control system designed to handle
everything from small to very large projects with speed and efficiency.
Use it with online services like
GitHub,
GitLab, or
Bitbucket to share your
work with
others. These are called remote repositories.
CVS,
Mercurial,
Subversion
Clearcase -
is a free java based dependency manager, with powerful features such as transitive
dependencies, ant integration, maven repository compatibility, continuous integration,
html reports and many more
See more:
Source
Control Tools in Java,
Compare
Suggested Reading:
Software configuration management,
Build Tools in Java Development,
ViewVC,
Compare
build tools
- Java Media Framework (JMF) -
is a Java library that enables audio, video and other time-based media to be
added to Java applications
See more:
Sun Media,
Tutorial,
JMF Guide,
Guide2
-
JavaSound -
for controlling audio playback, audio capture, MIDI synthesis, and basic
MIDI sequencing
See more:
Sun Media,
Midi,
MIDI,
Java-midi
|
|
See also: • Java ME
• Java 3D
• Graphic Objects (2D &
3D)
Standards you need to be familiar as a priority, see
XML & JSON Topics,
XML Usage in Web Applications
• XML Processing (JAXP) and
JAXB
• X-Stream
Annotations
- JiBX -
for binding XML data to Java objects, lets you work with data from XML doc.
using your own class structures
See more:
About,
Step by
- dom4j -
is an easy to use, open source library for working with XML, XPath and XSLT
on the Java platform
See more:
About,
Usage
|
- XMLBeans
-
is a breakthrough technology, easy for developers to access and manipulate
XML data and documents in Java
See more:
About,
XMLBeans,
Java XML Beans,
Marshalling via O/X Mappers
- XUL-XML User Interface - is for
building rich client, desktop and mobile applications.
See more:
About,
UI XML
tutorial
- JSON in
Java - is a ;ibrary used to
work with JSON formatted data.
See more:
Jackson,
Gson,
Gson-io,
Genson,
java-org-json
|
Comparision of xml tools:
Comparing Data
Binding Tools
• Java XML
Tools,
• JSON library comparison
Tools,
• Gson vs Jackson
Integration Frameworks ⇧
Software architecture and software design are two aspects of the same topic.
Enterprise
integration is a technical field of Enterprise Architecture, which focused
on the study of topics such as system interconnection, electronic data interchange, product
data exchange and distributed computing environments.
Enterprise Information Integration (EII), is the ability to support
a unified view of data and information for an entire organization.
ARIS
(Architecture of Integrated Information Systems) is an approach to enterprise modeling. See
also: BUSINESS PROCESS
MODELING TOOLS
Java Business Integration (JBI)
is a specification developed under the Java Community Process (JCP) for an approach to
implementing a service-oriented architecture (SOA). The following open-source software JBI based ESB implementations are available here and an example.
The Application Integration Framework (AIF) enables companies to integrate and communicate with other
business processes and partners electronically. E.g. Overview of AIF is the infrastructure
within Microsoft Dynamics AX with which you can expose business logic or exchange data with
other systems. E.g.
Microsoft Dynamics AX, Trask
Application Integration.
An Enterprise Architecture Framework
(EA
framework) defines how to create and use an enterprise architecture.
Enterprise Application Integration - EAI (see implementations: EAI Commercial products, e.g. TIBCO Business
Works, EAI using J2EE) is the use of software and computer
systems architectural principles to integrate a set of enterprise computer applications,
e.g.
Patterns
and Best Practices for EI,
2
What is a TIBCO BW (Business Works)?
TIBCO ActiveMatrix
BW is one of the leading service
creation, orchestration, and integration products on the market. It has been deployed by
over thousands companies worldwide and is the foundation for several of the largest
mission critical service-oriented business applications in production today. For ore
information:
TIBCO
ActiveMatrix BusinessWorks Essentials.
Other Tools:
Java Toolkit
• API's
• Programmer's Corner
• WebDev. Tools
• Database Tools
• Modeling & Design
• Multimedia (AI Tools)
• Maths and Science
Some other practical Java Frameworks
References
- Comparison of web application frameworks
- Open Source
Web Frameworks
- Integration using J2EE
- EAI
- Choose language to compare
web frameworks
|