The topic of this article may not meet Wikipedia's general notability guideline .(October 2024) |
Developer(s) | Apache Software Foundation |
---|---|
Stable release | 3.8.0 / May 16, 2023 [1] |
Repository | James Repository |
Written in | Java |
Platform | Java SE |
Type | Mail transfer agent |
License | Apache License 2.0 |
Website | james |
Apache James, a.k.a. Java Apache Mail Enterprise Server or some variation thereof, is an open source SMTP and POP3 mail transfer agent written entirely in Java. [2] James is maintained by contributors to the Apache Software Foundation, with initial contributions by Serge Knystautas. [3] [4] IMAP support has been added as of preview version 3.0-M2, [5] which now requires Java 1.5 or later.
The James project manages the Apache Mailet API which defines "matchers" and "mailets". These allow users to write their own mail-handling code, such as to update a database, build a message archive, or filter spam. [2] A matcher is used to classify messages based on some criteria, and then determines whether the message should be passed to an appropriate mailet for processing. Mailets are so-called due to their conceptual similarity to a servlet, [6] and arose because Sun Microsystems declined a proposal to include mail-handling in the servlet implementation. [4] James ships with a variety of pre-written matchers and mailets to serve common tasks. [6] Many sets of mailets and matchers can be combined to produce sophisticated and complex functional behaviour.
The Apache James project also produces pure Java libraries for implementing Sender Policy Framework (SPF), the Sieve mail filtering language, and parsing MIME content streams, independent of Sun's JavaMail API.
James was originally formed under the Jakarta Project as Jakarta-James.
[4] In January 2003, James was upgraded to a top-level Apache project in a unanimous decision by the ASF Board of Directors under the chairmanship of Serge Knystautas.
James is distributed to within the Phoenix container, [6] which implements the Apache Avalon application framework.
Recent developments include a version which runs in the Spring Framework application framework.
Version 2.3.0 was released in October 2006.
Version 2.3.1 was released in April 2007.
Version 2.3.2 was released in August 2009. [7]
Version 2.3.2.1 (security fix) was released on September 8, 2015.
Version 3.0.0 was released on July 20, 2017.
Version 3.0.1 (security fix) was released on October 20, 2017.
Version 3.1.0 was released on July 31, 2018.
Version 3.2.0 was released on November 14, 2018.
Version 3.3.0 was released on March 26, 2019.
Version 3.4.0 was released on September 5, 2019.
Version 3.5.0 was released on July 16, 2020.
Version 3.8.0 was released on May 16, 2023.
The Jakarta Messaging API is a Java application programming interface (API) for message-oriented middleware. It provides generic messaging models, able to handle the producer–consumer problem, that can be used to facilitate the sending and receiving of messages between software systems. Jakarta Messaging is a part of Jakarta EE and was originally defined by a specification developed at Sun Microsystems before being guided by the Java Community Process.
Jakarta EE, formerly Java Platform, Enterprise Edition and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web services. Jakarta EE applications are run on reference runtimes, which can be microservices or application servers, which handle transactions, security, scalability, concurrency and management of the components they are deploying.
A Jakarta Servlet, formerly Java Servlet is a Java software component that extends the capabilities of a server. Although servlets can respond to many types of requests, they most commonly implement web containers for hosting web applications on web servers and thus qualify as a server-side servlet web API. Such web servlets are the Java counterpart to other dynamic web content technologies such as PHP and ASP.NET.
A web container is the component of a web server that interacts with Jakarta Servlets. A 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. A web container handles requests to servlets, Jakarta Server Pages (JSP) files, and other types of files that include server-side code. The Web container creates servlet instances, loads and unloads servlets, creates and manages request and response objects, and performs other servlet-management tasks. A web container implements the web component contract of the Jakarta EE architecture. This architecture specifies a runtime environment for additional web components, including security, concurrency, lifecycle management, transaction, deployment, and other services.
Apache Tomcat is a free and open-source implementation of the Jakarta Servlet, Jakarta Expression Language, and WebSocket technologies. It provides a "pure Java" HTTP web server environment in which Java code can also run. Thus it is a Java web application server, although not a full JEE application server.
WebObjects is a discontinued Java web application server and a server-based web application framework originally developed by NeXT Software, Inc.
Jakarta Faces, formerly Jakarta Server Faces and JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications. It was formalized as a standard through the Java Community Process as part of the Java Platform, Enterprise Edition. It is an MVC web framework that simplifies the construction of user interfaces (UI) for server-based applications by using reusable UI components in a page.
Apache Geronimo is an open source application server developed by the Apache Software Foundation and distributed under the Apache license.
Apache Tapestry is an open-source component-oriented Java web application framework conceptually similar to JavaServer Faces and Apache Wicket. Tapestry was created by Howard Lewis Ship, and was adopted by the Apache Software Foundation as a top-level project in 2006.
GlassFish is an open-source Jakarta EE platform application server project started by Sun Microsystems, then sponsored by Oracle Corporation, and now living at the Eclipse Foundation and supported by OmniFish, Fujitsu and Payara. The supported version under Oracle was called Oracle GlassFish Server. GlassFish is free software and was initially dual-licensed under two free software licences: the Common Development and Distribution License (CDDL) and the GNU General Public License (GPL) with the Classpath exception. After having been transferred to Eclipse, GlassFish remained dual-licensed, but the CDDL license was replaced by the Eclipse Public License (EPL).
Apache Log4j is a Java-based logging utility originally written by Ceki Gülcü. It is part of the Apache Logging Services, a project of the Apache Software Foundation. Log4j is one of several Java logging frameworks.
In software engineering, a WAR file is a file used to distribute a collection of JAR-files, JavaServer Pages, Java Servlets, Java classes, XML files, tag libraries, static web pages and other resources that together constitute a web application.
Eclipse Jetty is a Java web server and Java Servlet container. While web servers are usually associated with serving documents to people, Jetty is now often used for machine to machine communications, usually within larger software frameworks. Jetty is developed as a free and open source project as part of the Eclipse Foundation. The web server is used in products such as Apache ActiveMQ, Alfresco, Scalatra, Apache Geronimo, Apache Maven, Apache Spark, Google App Engine, Eclipse, FUSE, iDempiere, Twitter's Streaming API and Zimbra. Jetty is also the server in open source projects such as Lift, Eucalyptus, OpenNMS, Red5, Hadoop and I2P. Jetty supports the latest Java Servlet API as well as protocols HTTP/2 and WebSocket.
The Apache JServ Protocol (AJP) is a binary protocol that can proxy inbound requests from a web server through to an application server that sits behind the web server. AJP is a highly trusted protocol and should never be exposed to untrusted clients, which could use it to gain access to sensitive information or execute code on the application server.
The Spring Framework is an application framework and inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform. The framework does not impose any specific programming model.. The framework has become popular in the Java community as an addition to the Enterprise JavaBeans (EJB) model. The Spring Framework is free and open source software.
Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.
Jakarta RESTful Web Services, is a Jakarta EE API specification that provides support in creating web services according to the Representational State Transfer (REST) architectural pattern. JAX-RS uses annotations, introduced in Java SE 5, to simplify the development and deployment of web service clients and endpoints.
Apache Spark is an open-source unified analytics engine for large-scale data processing. Spark provides an interface for programming clusters with implicit data parallelism and fault tolerance. Originally developed at the University of California, Berkeley's AMPLab, the Spark codebase was later donated to the Apache Software Foundation, which has maintained it since.