tutoriales programacion java events

java - tutoriales programacion ya



¿Java tiene soporte nativo para eventos, similar al de C#? (9)

Como ya dijiste, puedes hacer exactamente lo mismo con el patrón publisher-subscriber / Observer. Solo requiere un poco más de trabajo de campo.

Y no, Java no tiene soporte nativo para eventos, como C # lo hace con delegados.

Estoy un poco confundido por lo que he escuchado que Java no hace eventos.

Pero sé que hace eventos GUI.

¿Me estoy perdiendo de algo? ¿Java tiene un mecanismo de manejo de eventos?

Soy consciente de que puedo implementar un patrón de suscriptor de editor, pero estoy buscando soporte nativo dentro de Java.

Parece que recuerdo algo acerca de los eventos de Java Adding en Java 5 o 6, pero no recuerdo dónde escuché esto y es posible que lo esté inventando.

Básicamente estoy envolviendo un dispositivo en una clase Java, el dispositivo arroja eventos, y estoy buscando la manera más lógica de exponer esto. Vengo principalmente de .Net Background y estoy buscando algo así como los eventos en .Net (C #)

Cualquier ayuda sería apreciada.


Necesitas hilos. La GUI en Java tiene eventos, porque hay un hilo dedicado para que los eventos UI se despachen. También hay algo llamado "Observer" y "Observable" (esta es la versión neutral del gusto de los oyentes del evento de la interfaz gráfica de usuario) pero es solo el patrón de diseño ...


No conozco C #, pero los Java Beans que no son componentes de la interfaz de usuario ciertamente pueden notificar a los oyentes acerca de los cambios de estado mediante eventos:

http://java.sun.com/developer/onlineTraining/Beans/beans02/

Esto ha sido parte de la especificación de Java Beans desde que salió. Tenga en cuenta la fecha en el tutorial: es vintage 2000.

El origen y el oyente deben ejecutarse en la misma JVM. Tendría que usar un proxy para comunicarse con algo que se ejecuta en otra JVM, pero podría hacerse.

Busqué en Google el tutorial de eventos C # y encontré esto . El registro de oyentes de Java y el lanzamiento de eventos cambiados a la propiedad fue una reminiscencia de lo que vi cuando revisé el tutorial de C #. ¿Me perdí algo importante? (Admitiré que no leí profundamente, no tengo tiempo en este momento).


No hay soporte nativo en Java: tendrá que implementar el patrón Observer (también conocido como Subcribe / Publish). Es bastante directo: no más de una docena de líneas de código.


Por lo que recuerdo de Java (no he trabajado con eso en> 6 meses), no creo que haya eventos ala .NET. Su mejor opción será hacer uso del patrón de editor / suscriptor. Es bastante fácil de implementar y bastante confiable.


Swing o AWT, que son los juegos de herramientas de la interfaz de usuario de Java, manejan eventos; consulta el tutorial oficial del evento Swing para ver ejemplos. Deberá haber escrito su UI en Swing para poder registrar oyentes para estos eventos.


También puede consultar la biblioteca de código abierto EventBus , que, contrariamente al patrón estándar de publicador / suscriptor, utiliza una clase de mediador (el bus de eventos) para reducir el estrecho acoplamiento requerido en el modelo de editor / suscriptor (donde los suscriptores debe saber que todos los editores deben registrarse, lo que no siempre es posible y suele ser engorroso).

Lo he usado en aplicaciones de GUI pero puede tratar con cualquier tipo de evento.


El mecanismo de suscripción / publicación propuesto por otros aquí le permitirá implementar eventos sincrónicos . Para bucles de eventos asíncronos (disparar y olvidar) Es posible que desee ver "actores". Un Actor<A> consiste en un controlador para mensajes (eventos) de tipo A, así como una estrategia de subprocesamiento para ejecutar el controlador. Esto le permite hacer eventos concurrentes y asincrónicos de la siguiente manera:

public class EventExample { public static void main(String[] args) { while ((char c = System.in.read()) >= 0) { eventHandler.act(c); } } public static Actor<Character> eventHandler = Actor.actor(Strategy.simpleThreadStrategy(), new Effect<Character>() { public void e(Character c) { // Do something with c here. } }); }

Obtenga la biblioteca de actores aquí. Vea el Javadoc aquí.