* [Topics](/en/topics "Topics")
* [Application development and delivery](/en/topics/application-modernization "Application development and delivery")
* What are Java frameworks?
What are Java frameworks?
=========================
Published  December 17, 2019•*3*-minute read
Copy URL
Jump to section
---------------
OverviewWhat is Java?Library vs framework vs APIPopular Java frameworksQuarkus framework
Overview
--------
Java™ frameworks are bodies of prewritten code used by developers to create apps using the Java programming language.
Java frameworks are specific to the Java programming language. It’s a Java platform for developing software applications and Java programs.
Java frameworks are bodies of reusable pre-written code acting as templates that developers can use to create applications by filling in custom code as needed.
Frameworks are created to be used over and over so that developers can program applications without the manual overhead of creating everything from scratch.
Java frameworks may include predefined classes (such as categories of objects) and functions that can be used to process, input, and manage hardware devices, as well as interact with system software. This depends on the type of framework, the Java developer’s skill level, what they’re trying to accomplish, and their own preferences.
What is Java?
-------------
Java is an object-oriented programming (OOP) language that’s been used since 1995. Developers use Java to program applications to work within the boundaries of the domain they’re in.
Java shouldn’t be confused with JavaScript, which is a different programming language developed by another company around the same time. Java development creates apps that can run in browsers or on servers’ bare metal machines, [virtual machines](/en/topics/virtualization/what-is-a-virtual-machine), or [containers](/en/topics/containers). JavaScript only runs in browsers.
Red Hat resources
-----------------
[Keep reading](/en/resources "Keep reading")
Library vs. framework vs. application programming interface
-----------------------------------------------------------
A library is a certain function of an application; a framework is the app’s skeleton; and the API brings them both together for the user. A framework may include a library, compiler, and other programs used in the development process. With a good framework, a developer doesn’t have to bother with recurrent pieces of code used across a domain or application.
### Library
A library is a collection of frequently-used precompiled routines or resources (classes, templates, configuration data, etc.) available for a computer program to use. Instead of writing the code for this function each time a task needs to run, routines are used whenever the task needs to be performed. If a resource is needed, the program calls the library for it.
### Framework
A framework could be a collection of libraries. The main difference between the 2 is inversion of control—frameworks has the control to call an action. The framework already has the template or frame of what is needed, which means it can call for the resources it needs based on what’s already there (the holes in the code that need to be filled).
### Application programming interface
A framework is similar to an [application programming interface (API)](/en/topics/api). Frameworks technically includes APIs. Frameworks are foundations for programming, while APIs give access to the elements that the framework supports.
Popular Java frameworks
-----------------------
There are several Java frameworks. A developer’s skill set and app or website requirements determine which frameworks should be used. SomePopular open source frameworks include:
* [Quarkus](/en/topics/cloud-native-apps/what-is-quarkus), a full-stack Java framework that works well with [cloud-native](/en/topics/cloud-native-apps), [microservice](/en/topics/microservices)-based [infrastructures](/en/topics/cloud-computing/what-is-it-infrastructure)
* Grails, written in the Groovy programming language to provide web application frameworks with views for HTML and CSS plugins
* Hibernate, an object-relational mapping (ORM) framework used for relational database management that can execute SQL queries with the help of APIs provided by Java Database Connectivity (JDBC)
* Google Web Toolkit (GWT) that connects front-end/client-side and back-end software development teams
Other popular Java frameworks include:
* Vaadin, with frameworks focused on user interfaces
* Play, which streamlines web app development and works well with the Scala programming language
* Apache Struts, which is focused on enterprise applications and works well with asynchronous JavaScript and XML (AJAX) techniques—a helpful way to update web page sections without refreshing everything
* Oracle’s JavaServer Faces (JSF) that provides backend developers with frontend frameworks
Quarkus: A full-stack Java framework
------------------------------------
Quarkus is a [Kubernetes](/en/topics/containers/what-is-kubernetes)-native Java stack made for Java virtual machines (JVMs) and native compilation. It optimizes Java specifically for Kubernetes so it becomes an effective platform for [serverless](/en/topics/cloud-native-apps/what-is-serverless), [cloud](/en/topics/cloud-computing), and Kubernetes environments.
Quarkus’ dependency injection solution is based on contexts and dependency injection (CDI) and includes an extension framework to expand functionality and to configure, boot, and integrate a framework into your application. Adding an extension is as easy as adding a dependency, or you can use Quarkus tooling.
[Learn more about Quarkus](/en/topics/cloud-native-apps/what-is-quarkus "article | What is Quarkus?")
Product
Cloud-native application development with Red Hat OpenShift
-----------------------------------------------------------
Red Hat OpenShift provides a trusted platform for cloud-native application development, so you can deliver new features that serve customer needs.
[Learn more about this product](/en/technologies/cloud-computing/openshift/cloud-native "Cloud-native application development with Red Hat OpenShift")
All Red Hat product trials
--------------------------
Our no-cost product trials help you gain hands-on experience, prepare for a certification, or assess if a product is right for your organization.
[Keep reading](/en/products/trials "All Red Hat product trials")
Keep reading
------------
### What is serverless?
Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers.
[Read the article](/en/topics/cloud-native-apps/what-is-serverless "article | what is serverless?")
### Stateful vs stateless applications
The difference between stateful and stateless applications is that stateful applications save past and present information while stateless applications don’t.
[Read the article](/en/topics/cloud-native-apps/stateful-vs-stateless "article | Stateful vs stateless applications")
### What is application migration?
Application migration is a process that can improve workloads by moving an application from one environment to another.
[Read the article](/en/topics/cloud-native-apps/application-migration "article | what is application migration")
Application development and delivery resources
----------------------------------------------
### Related content
* Analyst material
  [Red Hat a “Leader” in the 2025 Forrester Wave™: Multicloud Container Platforms](/en/resources/forrester-wave-multicloud-container-platform)
* Analyst material
  [Red Hat a “Leader” in the 2025 Forrester Wave™: Multicloud Container Platforms](/en/engage/forrester-wave-multicloud-container-platform)
* Datasheet
  [Red Hat Developer Experience Assessment: empower Dev teams](/en/resources/developer-experience-assessment-datasheet)
* Blog post
  [Why agents are the new kingmakers](/en/blog/why-agents-are-new-kingmakers)
### Related articles
* [What is CI/CD?](/en/topics/devops/what-is-ci-cd)
* [What is application lifecycle management (ALM)?](/en/topics/devops/what-is-application-lifecycle-management-alm)
* [What is Istio?](/en/topics/microservices/what-is-istio)
* [What is serverless?](/en/topics/cloud-native-apps/what-is-serverless)
* [What is a CI/CD pipeline?](/en/topics/devops/what-cicd-pipeline)
* [Stateful vs stateless applications](/en/topics/cloud-native-apps/stateful-vs-stateless)
* [What is application migration?](/en/topics/cloud-native-apps/application-migration)
* [What is application integration?](/en/topics/cloud-native-apps/application-integration)
* [Shift left vs. shift right](/en/topics/devops/shift-left-vs-shift-right)
* [Red Hat OpenShift for developers](/en/technologies/cloud-computing/openshift/developers)
* [Red Hat OpenShift for platform engineers](/en/technologies/cloud-computing/openshift/platform-engineer)
* [Why choose Red Hat for a DevOps Platform?](/en/topics/devops/why-choose-red-hat-for-devops)
* [What is DevSecOps?](/en/topics/devops/what-is-devsecops)
* [What is an application development platform?](/en/topics/cloud-native-apps/what-app-dev-platform)
* [Security in the software development lifecycle](/en/topics/security/software-development-lifecycle-security)
* [What are cloud applications?](/en/topics/cloud-native-apps/what-are-cloud-applications)
* [What is agile methodology?](/en/topics/devops/what-is-agile-methodology)
* [How to deploy Red Hat OpenShift](/en/technologies/cloud-computing/openshift/deploy-red-hat-openshift)
* [Kubernetes-native Java development with Quarkus](/en/technologies/cloud-computing/openshift/quarkus)
* [What is deployment automation?](/en/topics/automation/what-is-deployment-automation)
* [What is an SDK?](/en/topics/cloud-native-apps/what-is-SDK)
* [What is a Java runtime environment (JRE)?](/en/topics/cloud-native-apps/what-is-a-Java-runtime-environment)
* [Why choose the Red Hat build of Quarkus?](/en/topics/cloud-native-apps/why-choose-red-hat-quarkus)
* [What is an application architecture?](/en/topics/cloud-native-apps/what-is-an-application-architecture)
* [What is Quarkus?](/en/topics/cloud-native-apps/what-is-quarkus)
* [What is blue green deployment?](/en/topics/devops/what-is-blue-green-deployment)
* [What is an IDE?](/en/topics/platform-engineering/what-is-ide)
[More about this topic](/en/topics/application-modernization "More about this topic")