2009-04-20 15 views
6

Me encantaría utilizar cierres en Java. He leído que pueden o no llegar a Java 7. Pero un proyecto de código abierto llamado functional-java ha implementado funcionalidades que incluyen cierres.¿Qué tan seguro sería usar funcional-java para agregar cierres a un proyecto de producción Java?

¿Qué tan seguro sería usar una biblioteca de este tipo en una aplicación de producción empresarial?

¿Existe alguna manera mejor de agregar cierres a Java actualmente?

+1

Podría intentar usar scala o clojur en su lugar – KitsuneYMG

Respuesta

6

Cierres definitivamente no se convertirá en Java 7, debido a la falta de consenso en torno a una sola implementación. See here.

La biblioteca funcional de Java se prueba exhaustivamente y se desarrolla activamente. Si navegas por la fuente, verás que es simplemente Java estándar de pantano, y no hay muchas cosas que podrían salir mal. Conozco al menos una aplicación empresarial de misión crítica que la usa en producción. Esta aplicación tiene más de un millón de usuarios.

Hazlo.

0

BGGA sigue siendo una implementación de prototipo, no estoy seguro de lo cómodo que está poniendo el código de prototipo en producción. echa un vistazo a google collections te acerca más al objetivo, aunque más ampliamente

+0

Interesante, pero no parece tener nada como cierres, solo colecciones. –

+0

Java funcional no requiere BGGA, pero sí lo admite. – Apocalisp

+1

Google Collections tiene un tipo de función , y la mayoría de sus colecciones implementan un functor. Las colecciones funcionales de Java implementan funtores y mónadas, cofunctores y comonads. – Apocalisp

4

Java funcional no requiere el uso de cierres: el origen se compila con cualquier compilador de Java 1.5. Java funcional es mucho más completo que las colecciones de Google y simplemente le permite usarlo bien con BGGA.

Espero que esto ayude.

2

Si usted está buscando una solución más ligera para tener cierres en Java llanura revisar el proyecto lambdaj:

http://code.google.com/p/lambdaj/

+0

Lambdaj fue, la última vez que lo probé, bastante lento. Honestamente, estaba realmente decepcionado porque esperaba utilizarlo. – RHSeeger

+1

¿Qué versión has probado? ¿En qué función lo encontraste lento? Por supuesto, tiene que pagar algo por el uso del proxy y la reflexión, pero la pérdida de rendimiento está bastante bien documentada y en la mayor parte de los casos es muy razonable. –

+1

Ojalá pudiera responder sus preguntas, pero no hice mucha cosa cuando lo probé. Me parece recordar que era 3-5 veces más lento para el caso de uso en el que lo estaba probando ... y que ese caso era algo para lo que lo usaría (es decir, cerca de algo que estoy haciendo en el código de producción), pero no más que eso. Realmente deseo poder ser más específico, pero fue hace un par de meses y no tomé muchas notas. – RHSeeger

4

Creo que usted está buscando en esta cuestión desde el punto de vista equivocado.

Me encantaría utilizar cierres en Java. ... ¿Qué tan seguro sería usar dicha biblioteca en una aplicación de producción empresarial?

Su decisión sobre qué tecnología utilizar en una aplicación de producción empresarial debe basarse en lo que será mejor para la empresa a largo plazo. Debería hacer preguntas como:

  • ¿Agregar la tecnología va a mejorar significativamente la aplicación desde el punto de vista de la funcionalidad?
  • ¿Cuáles son los riesgos para el proyecto actual?
  • ¿La tecnología dice que está "lista para producción"?
  • Es compatible con la tecnología. ¿Es probable que todavía sea compatible en 5 a 10 años?
  • Si abandona la empresa, ¿alguien más va a hacerse cargo de mantener su código?
  • ¿Cuáles son las implicaciones de capacitación/reclutamiento del uso de la tecnología?

En general, las afirmaciones como "Me encantaría usar Xxx" no deberían tener cabida en la toma de decisiones de la empresa.(Hay contraejemplos, por ejemplo, nuevas empresas que apuestan a la empresa por alguna tecnología nueva, pero la tasa de éxito real es ... umm ... abierta a la especulación)

Para resumir todo, si está construyendo aplicaciones de producción empresarial, debe ser conservador y resistir la tentación de utilizar una nueva tecnología brillante "por diversión". Intenta pensar como un gerente de TI.

0

Pregunta demasiado antigua para responder. Aquí tenemos lambdas en java8 para hacerte la vida más fácil.

Cuestiones relacionadas