Las características distintivas de WebObject son su orientación a objetos , la conectividad con bases de datos y las herramientas de creación de prototipos. Las aplicaciones creadas con WebObjects se pueden implementar como sitios web, aplicaciones de escritorio Java WebStart y/o servicios web basados en estándares .
WebObjects fue mantenido por Apple durante bastante tiempo. Sin embargo, debido a que Apple dejó de mantener el software, ahora lo mantiene una comunidad en línea de voluntarios. Esta comunidad lo llama "Project Wonder".
Apple adquiere NeXT y sigue manteniendo el software
Tras la fusión de NeXT con Apple Inc. en 1997, el perfil público de WebObjects languideció. Muchos de los primeros usuarios pasaron más tarde a tecnologías alternativas, incluida Apple, que había sido el último gran cliente restante del software, y dependían de él para impulsar partes de su Apple Store en línea y la iTunes Store , que era la implementación de mayor perfil de WebObjects en ese momento.
WebObjects fue parte de la estrategia de Apple de usar software para impulsar las ventas de hardware y en 2000 el precio se redujo de $50,000 (para la licencia de implementación completa) a $699. A partir de mayo de 2001, WebObjects se incluyó con Mac OS X Server y ya no requería una clave de licencia para el desarrollo o la implementación.
WebObjects pasó de ser un producto independiente a ser parte de Mac OS X con el lanzamiento de la versión 5.3 en junio de 2005. Las herramientas y los marcos de desarrollo, que anteriormente se vendían por 699 dólares estadounidenses, se incluían en el IDE Xcode de Apple . A partir de entonces se interrumpió el soporte para otras plataformas, como Windows . Apple afirmó que seguiría integrando las herramientas de desarrollo de WebObjects con Xcode en futuras versiones. Esto incluía un nuevo complemento EOModeler para Xcode. Sin embargo, esta estrategia no se siguió aplicando.
En 2006, Apple anunció la descontinuación del puente Cocoa-Java de Mac OS X con el lanzamiento de Xcode 2.4 en la Conferencia Mundial de Desarrolladores de agosto de 2006, y con él todas las características dependientes, incluyendo la suite completa de aplicaciones para desarrolladores de WebObjects: EOModeler, EOModeler Plugin, WebObjects Builder, WebServices Assistant, RuleEditor y WOALauncher. Apple había decidido concentrar sus recursos de ingeniería en el motor de tiempo de ejecución de WebObjects, dejando la futura responsabilidad de las aplicaciones para desarrolladores a la comunidad de código abierto. La principal alternativa de código abierto —el IDE Eclipse con la suite de complementos WOLips— había madurado hasta tal punto que sus capacidades habían, en muchas áreas, superado las de las propias herramientas de Apple, que no habían visto actualizaciones significativas durante varios años.
Apple prometió brindar asistencia a la comunidad en sus esfuerzos por ampliar dichas herramientas y desarrollar otras nuevas. En una publicación en la lista de correo webobjects-dev, [1] Daryl Lee, del equipo WebObjects de Apple, reveló públicamente la nueva estrategia de la compañía para WebObjects. Prometió "hacer de WebObjects el mejor entorno de ejecución del lado del servidor" mediante:
Mejorar el rendimiento, la capacidad de gestión y el cumplimiento de los estándares
Cómo hacer que WebObjects funcione bien con Ant y los IDE más populares, incluidos Xcode y Eclipse
Abrir y hacer públicos todos los estándares y formatos de los que depende WebObjects
WebObjects 5.4, que se incluyó en Mac OS X Leopard en octubre de 2007, eliminó el requisito de clave de licencia tanto para el desarrollo como para la implementación de aplicaciones WebObjects en todas las plataformas. Todos los métodos para verificar las limitaciones de la licencia quedaron obsoletos.
El fin de WebObjects y el comienzo del Proyecto Wonder
En 2009, Apple dejó de publicar nuevas versiones de WebObjects fuera de Apple. La comunidad decidió continuar el desarrollo con Project Wonder, un marco de código abierto que se basa en los marcos básicos de WebObjects y los amplía. Por ejemplo, Project Wonder ha actualizado las herramientas de desarrollo y proporciona un marco REST que no formaba parte del paquete WebObjects original.
Aunque en su día se incluyó en la instalación predeterminada de Mac OS X Server, WebObjects dejó de instalarse de forma predeterminada a partir de Mac OS X Snow Leopard Server y, poco después, Apple dejó de promocionar o vender WebObjects. A partir de 2016, WebObjects cuenta con el apoyo activo de su comunidad de desarrolladores, la "WOCommunity Association", que amplía los marcos básicos y proporciona correcciones con Project Wonder. La última vez que la organización celebró una Conferencia Mundial de Desarrolladores de WebObjects, WOWODC, fue en 2013. [2] [3]
En mayo de 2016, Apple confirmó que WebObjects había sido descontinuado. [4]
Herramientas
A partir de 2016, la mayoría de los arquitectos e ingenieros de WebObjects utilizan las herramientas que desarrolla la comunidad de WebObjects. Estas herramientas se ejecutan dentro del IDE de Eclipse y son de código abierto. Los complementos de WebObjects para Eclipse se conocen como WOLips.
La creación de marcos y aplicaciones WebObjects para su implementación se logra generalmente utilizando el conjunto de herramientas WOProject para Apache Ant o Apache Maven . Estas herramientas se distribuyen con WOLips.
Marcos básicos
Una aplicación WebObjects es esencialmente un ejecutable del lado del servidor, creado mediante la combinación de objetos de marco de aplicación prediseñados con el código personalizado del desarrollador. Los marcos de WebObjects se pueden dividir en tres partes principales:
WebObjects Framework (WOF) se encuentra en el nivel más alto del sistema. Es responsable de la interfaz de usuario y la gestión de estados de la aplicación. Utiliza un enfoque basado en plantillas para tomar ese gráfico de objetos y convertirlo en HTML u otros estándares de visualización de información basados en etiquetas, como XML o SMIL . Proporciona un entorno en el que puede utilizar y crear componentes reutilizables. Los componentes son fragmentos de presentación (HTML) y funcionalidad (código Java) a menudo con una lista de parámetros para mejorar la reutilización. WebObjects Builder se utiliza para crear las plantillas HTML y crea el archivo .wod que vincula, por ejemplo, un objeto String de Java a objetos de interfaz como un campo de entrada en un formulario web.
El Enterprise Objects Framework (EOF) es, quizás, la característica distintiva de WebObjects. EOF se comunica con bases de datos relacionales y convierte las filas de la base de datos en un gráfico de objetos. Con EOModeler, el desarrollador puede crear una abstracción de la base de datos en forma de objetos Java. Para acceder o insertar información en la base de datos, el desarrollador simplemente accede a los Enterprise Objects (EO) de Java desde su lógica empresarial. Después de eso, EOF administra los Enterprise Objects y crea automáticamente el código SQL necesario para confirmar los cambios en la base de datos.
Java Foundation . Tanto Enterprise Objects como WebObjects se basan en las clases Java Foundation, que llevan ese nombre. Este marco contiene las implementaciones de estructuras de datos fundamentales y las utilidades que se utilizan en el resto de WebObjects. Entre los ejemplos se incluyen clases de valores y colecciones básicas, como matrices , diccionarios (objetos que contienen pares clave-valor) y clases de formato. Java Foundation es similar al marco Foundation que se incluye en la API Cocoa de Apple para aplicaciones de escritorio de macOS , pero Java Foundation está escrito en Java puro, a diferencia de Objective-C de Cocoa (con su contenedor de tiempo de ejecución Java bridge). Las clases Foundation tienen como prefijo las letras "NS" (una referencia a su herencia del sistema operativo NeXTSTEP ). Desde la transición de WebObjects a Java en 2000, la funcionalidad de muchas de las clases Java Foundation de Apple se replica en el propio JDK de Sun. Sin embargo, persisten en gran medida por razones de compatibilidad con versiones anteriores y los desarrolladores son libres de utilizar los marcos que prefieran.
Desarrollo rápido de aplicaciones basado en reglas (RBRAD)
WebObjects incluye un conjunto de tecnologías de desarrollo rápido que pueden crear automáticamente una aplicación web sin necesidad de escribir código Java . Dado un archivo de modelo para una base de datos, WebObjects creará una interfaz que admita nueve tareas comunes de bases de datos, incluidas consultas, edición y listado. Estas aplicaciones son útiles para crear prototipos o administrar una base de datos, tal vez para verificar relaciones o para agregar datos a la base de datos.
La interfaz de usuario se genera de forma dinámica, sobre la marcha, durante la ejecución mediante un sistema basado en reglas; no se genera ningún código. Por lo tanto, se puede modificar la configuración de una aplicación durante la ejecución (mediante un programa asistente) sin tener que volver a compilar o reiniciar la aplicación.
Los desarrolladores pueden utilizar una de tres tecnologías diferentes, según el tipo de interfaz que deseen emplear:
Direct To Web (D2W) permite a los desarrolladores crear rápidamente una aplicación web basada en HTML que accede a una base de datos.
Direct To Java Client permite a los desarrolladores crear rápidamente una aplicación de escritorio cliente utilizando el kit de herramientas Java Swing . Una ventaja de las aplicaciones Java Client es que pueden aprovechar la potencia de procesamiento del equipo cliente para realizar operaciones como ordenar una lista de elementos recibidos del servidor.
Direct To Web Services permite a los desarrolladores crear rápidamente aplicaciones basadas en servicios web que brindan acceso a un almacén de datos.
Ventajas de RBRAD
Tiempo de desarrollo y depuración enormemente reducido;
Mayor estabilidad mediante el uso de código altamente ejercitado;
Al utilizar la información contenida en el archivo del modelo de datos, las aplicaciones no violarán la integridad de la base de datos. Normalmente, tendría que escribir código para evitar tales situaciones y manejar los errores generados por datos incorrectos;
Utiliza plenamente los servicios de validación proporcionados por WebObjects y Enterprise Objects.
Compatibilidad con Java
WebObjects es un producto 100% Java con las siguientes características basadas en Java:
Implementación: Las aplicaciones se pueden implementar en cualquier sistema operativo que tenga Java 1.3 o posterior. Muchos desarrolladores han implementado con éxito aplicaciones en Windows y varios sistemas Linux como Red Hat Linux , Debian y SUSE . Las aplicaciones también se pueden alojar en cualquier servidor de aplicaciones compatible con Java EE como JBoss .
Integración con Java EE: las aplicaciones WebObjects se pueden empaquetar en un solo directorio (un archivo .war ampliado), lo que facilita su implementación en un contenedor de servlets Java EE .
JDBC: dado que WebObjects utiliza JDBC para la conectividad de bases de datos, cualquier DBMS que tenga un controlador JDBC se puede utilizar dentro de WebObjects.
Interfaz Swing: las aplicaciones WebObjects pueden entregarse al usuario como una "aplicación cliente Java" o como un subprograma Java.
Historial de versiones
WebObjects fue lanzado originalmente por NeXT Computer en marzo de 1996, pero fue adquirido por Apple Inc. con su adquisición de NeXT en diciembre de ese año.
1.0 — 28 de marzo de 1996
Lanzamiento debut.
2.0 — 25 de junio de 1996
Versión preliminar de la aplicación WebObjects Builder.
3.0 — Noviembre de 1996
3.1
Admite un subconjunto de las API de Java (sólo NT).
3.5 — Diciembre de 1997
Soporte mejorado para Java (sólo NT): todos los objetos y componentes se pueden trabajar como un conjunto de API de Java basadas en una implementación completa del JDK 1.1.3.
4.0 — Septiembre de 1998
Primera versión de WebObjects que se ejecuta en la plataforma Mac, específicamente Mac OS X Server 1.0 (una versión pública del sistema operativo beta anteriormente llamado " Rhapsody ").
El sistema operativo OPENSTEP 4.2 ya no es compatible; Windows NT ahora utiliza una nueva versión de la base de bibliotecas y soporte binario OpenStep llamada Yellow Box.
Se introdujeron acciones directas mediante las cuales las acciones se pueden enviar directamente a un objeto que puede manejarlas, lo que permite URL estáticas y más simples.
Se presenta un asistente de desarrollo sin código directo para la Web.
WebObjects y Enterprise Objects Framework proporcionan API seguras para subprocesos. Esto significa que puede escribir una aplicación WebObjects multiproceso donde antes no podía hacerlo. Esto permite que las aplicaciones puedan proporcionar comentarios de los usuarios para solicitudes de larga duración.
Mejores herramientas para gestionar, configurar y probar la escalabilidad de las aplicaciones.
Las capacidades de Java han mejorado mucho con respecto a la versión anterior, sin embargo, Objective-C compilado sigue siendo dos o tres veces más rápido;
Es posible crear un cliente Java totalmente funcional, ya sea como una aplicación independiente o como un subprograma con Interface Builder: todo tipo de componentes Swing y Java Bean se encuentran en paletas IB para su conexión.
Los desarrolladores ahora pueden depurar aplicaciones en una máquina que no tenga un servidor web presente.
EOF 3.0 agrega soporte para una nueva base de datos, OpenBase Lite, que se envía con EOF 3.0 como una demostración sin soporte.
EOF 3.0 introduce una nueva API, principalmente en EOUtilities, para facilitar las tareas de programación comunes.
EOModeler agrega soporte para atributos de prototipo y la capacidad de crear y almacenar consultas complejas (o EOFetchSpecifications).
4.5 —; Marzo de 2000
Soporte XML integrado mediante el analizador alphaWorks de IBM.
Nueva interfaz de WebObjects Builder, específicamente en la barra de herramientas de la ventana principal, la interfaz de usuario para vincular claves y la interfaz de usuario para editar tablas. Se han agregado una vista de rutas, un editor de API y validación de componentes.
Herramientas de creación de perfiles de aplicaciones.
EOF 4.5 viene con un nuevo adaptador de muestra: el adaptador LDAP.
Direct to Web ahora te permite crear tu propio estilo visual y expone una gran cantidad de API nuevas.
El Cliente Java se ha ampliado considerablemente, incluyendo una nueva capa de generación de interfaz de usuario, Direct to Java Client.
4.5.1
Primera versión compatible con Mac OS X 10.x y Windows 2000.
Correcciones para el tiempo de ejecución de EOF y WOFileUpload.
5.2.3 [13] — 16 de marzo de 2004
Actualización de rendimiento y estabilidad que aborda problemas con estados CLOSE_WAIT en la implementación mediante JavaMonitor y wotaskd y problemas relacionados con EOF bajo alta carga.
5.3 (implementación) para Mac OS X Server 10.4 — 23 de junio de 2005
El instalador actualiza los componentes del servidor de aplicaciones en Mac OS X Server 10.4 a WebObjects 5.3.
5.3.1 [16] — 10 de noviembre de 2005
Soluciona incompatibilidades con las herramientas para desarrolladores de Xcode 2.2 en Mac OS X 10.4.
Agrega una licencia de herramientas para desarrolladores modificada que permite que las aplicaciones WebObjects desarrolladas con Xcode 2.2 se implementen en cualquier plataforma compatible. La licencia está disponible en /System/Library/Frameworks/JavaWebObjects.framework/Resources/License.key después de la instalación.
Agrega una mejor generación de SQL en la herramienta de diseño del complemento EOModeler en Xcode.
Se mejoró la creación de FetchSpecification en la herramienta de diseño del complemento EOModeler en Xcode.
Agrega una ventana de "componentes y elementos" para mejorar el flujo de trabajo en WebObjects Builder.
Corrección de errores.
5.3.2 [17] — 7 de agosto de 2006
Soluciona incompatibilidades con las herramientas para desarrolladores de Xcode 2.4 en Mac OS X 10.4.
Mejoras de seguridad.
Otras mejoras.
Como parte del lanzamiento simultáneo de Xcode 2.4, el puente Cocoa Java queda obsoleto junto con las siguientes aplicaciones WebObjects: EOModeler, EOModeler Plugin, WebObjects Builder, WebServices Assistant, RuleEditor y WOALauncher.
5.3.3 [18] — 15 de febrero de 2007
"Actualización del horario de verano de WebObjects": actualiza los sistemas WebObjects 5.3 para que respeten los cambios del horario de verano (DST) que entrarán en vigor en marzo de 2007 en muchos países, incluidos Estados Unidos y Canadá. Utiliza la información más reciente sobre el horario de verano y la zona horaria disponible al 8 de enero de 2007.
5.4 [19] — 26 de octubre de 2007
La clave de licencia ya no es necesaria ni compatible
Desusos: Aplicaciones basadas en Java Client Nib, aplicaciones basadas en Direct to JavaClient, aplicaciones basadas en EOCocoaClient, OpenBase ya no es una base de datos de ejemplo, herramientas (EOModeler, WebObjects Builder, editor de reglas)
Analizador de plantillas de componentes combinados que reduce dos componentes a archivos .html individuales
Generación de páginas compatibles con XHTML
Controlador de solicitudes AJAX para un mejor almacenamiento en caché de páginas
Se agregó soporte para la generación segura de URL
Soporte de monitoreo JMX
Gestión de índices de entidades en el modelo
Se mejoró la sincronización con la base de datos.
Se agregó soporte para la generación de índices
Compatibilidad con enumeraciones en la conversión de atributos
Soporte mejorado para prototipos específicos de proveedores (EOJDBCOraclePrototype, EOJDBCFrontBasePrototype, etc.)
Soporte de Derby (base de datos integrada)
Soporte para genéricos
Actualización de WebServices (Eje 1.4)
Soporte completo para plist XML de Apple (lectura y escritura)
Soporte de construcción de hormigas
Especificaciones abiertas
5.4.1 [20] — 11 de febrero de 2008
"WebObjects 5.4.1 es una versión de actualización para la versión de WebObjects incluida en las herramientas de Mac OS X Leopard. Esta versión corrige varios errores en áreas como la serialización de servicios web, herramientas de implementación y compatibilidad con bases de datos, entre otras. Esta actualización se puede instalar en Mac OS X 10.5 Leopard".
Se corrigieron errores en la serialización, implementación y bases de datos de servicios web.
5.4.2 [21] — 11 de julio de 2008
Soluciona problemas del analizador WOComponent
Incluye tipos de datos de WebServices y cambios de API
Incluye correcciones de generación de SQL EOF
Resuelve problemas adicionales
5.4.3 [22] — 15 de septiembre de 2008
La instantánea de la base de datos EOF no se actualiza
Webassistant no está disponible para aplicaciones D2W
Excepciones al utilizar WOTextField con formateadores
Claves primarias duplicadas generadas por el adaptador JDBC de FrontBase bajo carga
Correcciones de problemas adicionales
WOWODC
Desde 2007, la comunidad ha celebrado una conferencia anual para desarrolladores de WebObjects, WOWODC. En 2007 y 2008, la conferencia se celebró el fin de semana anterior a la WWDC, y en 2009, la comunidad promovió dos conferencias: WOWODC West en San Francisco el 6 y 7 de junio, inmediatamente antes de la WWDC, y WOWODC East en Montreal el 29 y 30 de agosto. WOWODC 2010 se celebró en Montreal el 27, 28 y 29 de agosto de 2010. WOWODC 2011 se celebró en Montreal el 1, 2 y 3 de julio de 2011. WOWODC 2012 se celebró en Montreal el 30 de junio, 1 y 2 de julio de 2012. WOWODC 2013 se celebró en Montreal. WOWODC 2014 se celebró en Montreal (12, 13 y 14 de abril). WOWODC 2015 se celebró en Hamburgo los días 25, 26 y 27 de abril. WOWODC 2016 se celebró en Montreal los días 24, 25 y 26 de junio.
Alternativas de código abierto
El interés por las alternativas de código abierto a WebObjects que utilizan el lenguaje Objective-C creció con el paso de WebObjects de Objective-C (última versión WO 4.5.1) a Java (primera versión WO 5.0). Los dos marcos disponibles son SOPE, [23] que se ha utilizado como base del servidor de groupware OpenGroupware.org durante unos ocho años, y GNUstepWeb , que forma parte del proyecto GNUstep . También existen reescrituras de código abierto de los marcos EOF (AJRDatabase, GDL2). [24] [25]
También existen alternativas basadas en Java:
Wotonomy es un proyecto, alojado en SourceForge , que implementa una versión de código abierto y de sala limpia del sistema WebObjects 5.x. [26] Proporciona una implementación casi completa del marco web MVC, así como implementaciones parciales de las capas Foundation, Control y Data, y otras características. Es lo suficientemente funcional para aplicaciones de base de datos de fuente única y con bajo volumen de transacciones. Si bien la estructura del proyecto se reorganizó en 2006 en torno a una infraestructura de compilación Apache Maven [27] y se migró al sistema de control de revisión Subversion , [28] no ha habido ninguna actualización sustancial de la base de código desde 2003. [29]
Apache Tapestry tiene un diseño y una filosofía similares a los de WebObjects. [30] Tapestry se combina frecuentemente con Apache Cayenne , un marco de persistencia inspirado en EOF .
GETobjects es otro marco [31] con una API similar a WebObjects 5.x que está relacionada con SOPE. [23]
Un intento de hacer una versión de Swift basada en SOPE/GETobjects está disponible como SwiftObjects. [32] La implementación para Swift 4 es limitada debido a las capacidades de reflexión de esa versión de Swift.
^ Listas de correo de Apple: RE: Anuncios de desuso de Xcode 2.4 por Daryl Lee
^ WebObjects Community Association (WOCommunity) (sitio web oficial).
^ [1](WOWODC '12) sitio web oficial.
^ Leswing, Kif. "Apple oficialmente eliminó uno de los proyectos favoritos de Steve Jobs". Business Insider . Business Insider . Consultado el 5 de mayo de 2016 .
^ Notas de la versión de WebObjects 5.0
^ Notas de la versión de WebObjects 5.1
^ WebObjects 5.1.2: Descripción general de la actualización
^ WebObjects 5.1.3: Descripción general de la actualización
^ WebObjects 5.1.4: Descripción general de la actualización
^ Notas de la versión de WebObjects 5.2
^ WebObjects 5.2.1: Descripción general de la actualización
^ WebObjects 5.2.2: Descripción general de la actualización
^ WebObjects 5.2.3: Descripción general de la actualización
^ WebObjects 5.2.4: Descripción general de la actualización
^ Notas de la versión de WebObjects 5.3
^ WebObjects 5.3.1: Descripción general de la actualización
^ WebObjects 5.3.2: Descripción general de la actualización
^ WebObjects 5.3.3: Descripción general de la actualización
^ WebObjects 5.4: Actualización en el servidor Leopard
^ 5.4.1: Actualización en el cliente Leopard
^ Acerca de la actualización de WebObjects 5.4.2
^ Acerca de la actualización de WebObjects 5.4.3
^ ab Marcos SOPE para Objective-C
^ Base de datos AJR
^ GDL2
^ Proyecto Wotonomy
^ "Wotonomy se pasa a Maven y elimina el software no libre" - Christian Gruber
^ "La Wotonomy promueve la subversión" - Christian Gruber
^ "La web de Wotonomy se está consolidando" - Michael Powers