Utilicé XStream hace muchos años, pero veo que las bibliotecas no se actualizan desde 2008 (latest news). ¿Existe ahora una biblioteca de serialización Java XML más moderna y actualizada?¿Alternativa moderna a la biblioteca Java XStream?
Respuesta
En orden de preferencia, relevancia y actividad:
JAXB
Visita la JAXB project's site de revisar la tutorial y guide. También eche un vistazo a la original JAXB architecture whitepaper.
El proyecto JAXB mencionado anteriormente es la implementación de referencia de la API y está empaquetado por GlassFish Application Server.
EclipseLink 's MOXy
Visita la EclipseLink project's site y leer este introductory article to EclipseLink on InfoQ, y ver Blaise Doughan's answer about MOXy.
EclipseLink se originó a partir de Oracle TopLink y ahora es de código abierto, administrado por Eclipse Foundation, y se utiliza en una serie de productos basados en Eclipse.
XStream
Sí, XStream, porque ha sido realmente updated in 2011 with a major update and 2 service releases ya que preguntas, por lo que parece en buen estado y un muy buen candidato utilizados por mature projects. No olvide verificar las novedades en version 1.4.x.
Visite el XStream project's site y su tutorial para comparar.
XmlBeans
Visita la XmlBeans project's site.
XmlBeans es un proyecto bien probado que ha existido por un tiempo.
JiBX
Visita la JiBX project's site, siga el tutorial y guide.
JiBX podría ser una alternativa más simple si no le gusta la complejidad de XmlBeans o incluso JAXB.
+1 para JAXB. XMLBeans, por otro lado, no se ha lanzado desde julio de 2008, lo que lo coloca en una posición similar a XStream en lo que respecta al OP: http://xmlbeans.apache.org/sourceAndBinaries/index.html –
@Blaise: cierto, Lo sé. Pero he tenido buenas experiencias con eso. Además, como se menciona en otra respuesta de Steven C., el hecho de que esté desactualizado no siempre significa que sea malo. Tal vez significa que es lo suficientemente bueno como para no necesitar una nueva versión, aunque generalmente sería sospechoso al respecto. – haylem
@Blaise: pero en realidad, me di cuenta de que olvidé EclipseLink, que también me gusta, y se usa en muchas soluciones basadas en Eclipse (y otras) y se desarrolla activamente. Así que lo calificaría por encima de XmlBeans también. – haylem
El hecho de que algo no se haya actualizado durante 3 años no significa que esté desactualizado. Simplemente podría significar que no ha habido necesidad de para actualizarlo. Si no hay necesidad de cambiar un proyecto, ¿por qué cambiarlo?
Otra explicación para la aparente falta de "progreso" es que cambiar las API de la biblioteca tiende a ser perjudicial para los proyectos que dependen de ellos. Esto es particularmente problemático para proyectos que combinan muchos componentes de terceros y bibliotecas en una sola aplicación Java.
Buscar alternativas a una biblioteca es algo bueno, pero simplemente hacerlo porque la biblioteca no se ha actualizado recientemente no lo es. Si XStream hace lo que necesita, quédese con él. Más nuevo no significa necesariamente mejor.
XStream es bastante bueno y funciona bien. Incluso para proyectos recientes, prefiero usar XStream para casos de uso en los que cabe porque es fácil de usar, liviano y funciona muy bien.
Si está buscando un trabajo serio de encuadernación de frijoles, eche un vistazo a Simple Framework. También es una buena herramienta. Esto me ayudó en un proyecto en el que necesitaba hacer un trabajo de mapeo personalizado serio con anotaciones. http://simple.sourceforge.net/
Nota: Soy el plomo EclipseLink JAXB (MOXy), y un miembro de la JAXB (JSR-222) grupo de expertos.
Tiene razón al considerar la frecuencia de liberación de una biblioteca cuando realiza una elección de software. Hay muchas razones para una nueva versión del producto:
- cliente solicita - No importa lo bueno que su biblioteca es, la base de usuarios tendrá sugerencias de mejoras y peticiones.
- Desarrollos de la industria - La implementación modular es un tema candente en este momento, en los últimos años se tuvieron que hacer cambios en EclipseLink para hacerlo compatible con OSGi.
- Nuevas versiones de Java - Pronto se lanzará Java SE 7, aunque no es necesario un lanzamiento, tuvimos que hacer algunos ajustes en nuestra próxima versión para asegurar que fuéramos compatibles. Además, con el tiempo se agregarán más características para aprovechar los nuevos aspectos de Java (EclipseLink requiere un mínimo de Java SE 5).
Otro aspecto importante de la evaluación de cualquier proyecto de código abierto es la cantidad de committers activos. Sitios como ohloh.net son útiles para que:
JAXB (JSR-222)
JAXB es más que una aplicación, que es un estándar que se desarrolla a través del Java Community Process (JCP). Ha habido participantes de tales bibliotecas objeto a XML como XML Beans (BEA), EMF (IBM), TopLink (Oracle), etc. Como JAXB es parte de Java EE, está disponible en todos los servidores de aplicaciones: WebLogic, GlassFish, WebSphere, JBoss, etc.
JAXB Ofertas:
- 100% de cobertura del esquema
- múltiples implementaciones: Metro, EclipseLink MOXy, Apache JaxMe, etc
- incluido en Java SE 6, compatible con JDK 1.5
- Capacidad para empezar de clases de esquema XML o Java
- Varios mecanismos de extensión que incluyen XmlAdapter - Example
- opción para conservar conjunto de información XML a través de Carpeta - Example
- capa de enlace de JAX-WS (Web Services)
- capa de unión para JAX-RS (Resto) - Example
- Compatible con JSON (cuando se usa con bibliotecas como Jettison) - Example
EclipseLink JAXB (moxy)
moxy es una aplicación JAXB que ofrece muchas extensiones útiles, incluyendo:
Verdadero Objeto de mapeo XML mediante el aprovechamiento de XPath
El mapeo basado en XPath le permite comenzar con ambas clases de Java y un esquema XML y mapear los dos juntos.
- http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html
- http://bdoughan.blogspot.com/2011/03/map-to-element-based-on-attribute-value.html
Archivo de asignación de clases de manejo tercio del partido
En la actual JAXB Spec los metadatos se suministra a través de anotaciones. Esto puede ser problemático para usar con clases de terceros que no se pueden modificar. Esta es la razón por MOXY ofrece una forma de especificar las asignaciones a través de XML:
- http://bdoughan.blogspot.com/2010/12/extending-jaxb-representing-annotations.html
- http://bdoughan.blogspot.com/2011/04/moxys-xml-metadata-in-jax-rs-service.html
Extensiones de Entidades Mapeo de la APP
Muchas veces usted tiene que hacer más con sus objetos Java, entonces simplemente asigne un mapa a XML. Es posible que también deba persistir en una base de datos. Esto significa que su modelo de objeto puede tener restricciones adicionales sobre las que debe contabilizar.MOXY ofrece una serie de extensiones para este tipo de casos de uso:
- http://bdoughan.blogspot.com/2010/07/jpa-entities-to-xml-bidirectional.html
- http://wiki.eclipse.org/EclipseLink/Examples/MOXy/JPA
comparaciones
A continuación se presentan un par de comparaciones que he hecho comparando JAXB a XStream y Simple:
Buena respuesta Blaise;) –
xstream 1.4.6 fue lanzado en diciembre de 2013, con mejoras de Java 8, por lo que la biblioteca ha sido actualizado desde 2008.
- 1. Java XStream con HashMap
- 2. Serialise a YAML usando XStream en Java
- 3. XStream manejo doble subrayado (Java)
- 4. C++ Serialización Limpiar XML Similar a XSTREAM
- 5. ¿Existe una alternativa moderna sessionStorage que funcione entre subdominios?
- 6. Alternativa a la clase observable de Java?
- 7. alternativa a la sentencia if en Java
- 8. alternativa a servicewrapper para java?
- 9. alternativa a File.Exists() en Java
- 10. Alternativa simple a la biblioteca GNU Readline no GPL
- 11. Cómo analizar XML a un objeto Java usando XStream
- 12. Equivalente .NET de la arquitectura web Java moderna
- 13. Java xstream - Ignorar la etiqueta que no existe en XML
- 14. alternativa a CutyCapt
- 15. Alternativa a las Preferencias en Java
- 16. Alternativa de Java a Windows Workflow Foundation
- 17. ¿Alternativa a la gitosis?
- 18. ¿Existe una alternativa no Java a OSGi?
- 19. ¿La versión moderna de WinDiff?
- 20. Biblioteca de geometría 2D: alternativa LGPL a CGAL?
- 21. ¿Cuál es la alternativa de Java principal a ASP.NET/PHP
- 22. Alternativa a la caja del conmutador en Java
- 23. ¿Alternativa a Gridster?
- 24. ¿Alternativa a GLUTesselator?
- 25. Thread.Sleep alternativa en Java
- 26. alternativa a los mapas
- 27. ¿Cuál es la mejor alternativa para la serialización de Java?
- 28. personalización serialización de las colecciones de Java utilizando xstream
- 29. Rendimiento del controlador Xstream
- 30. Xstream no-args
A partir de agosto de 2011, ha llegado a xstream tuvo su [primera actualización importante en 3 años] (http://xstream.codehaus.org/news.html#1.4). Este ritmo de desarrollo parece apropiado ya que, como han explicado otras respuestas, XStream es un proyecto maduro. –
Y, de hecho, las actualizaciones continúan: "8 de febrero de 2014 XStream 1.4.7 lanzado". –