Los @ se llaman anotaciones y sirven para muchas cosas, normalmente no en tiempo de ejecución, sino cuando alguna herramienta procesa el código.
Por ejemplo, si tu haces una ClaseHija que hereda de una ClasePadre y quieres sobreescribir uno de los métodos de la clase padre, puedes hacerlo normalmente. Pero si te equivocas al teclear y el método no tiene exactamente el mismo nombre o los mismos parámetros, el compilador compilará igual aunque el método es realmente un método nuevo y no sobreescribe al del padre. Sin embargo, si a ese método en la clase hija le pones
@Override public void unMetodoDelPadre(....)
el compilador protestará si ese método no está realmente sobreescribiendo a uno del padre.
Otra que viene con java y suele usarse es
@SupressWarnings public void unMetodo(...)
que hace que el compilador no muestre warnings en ese metodo.
Hay herramientas adicionales que añaden sus propias anotaciones (@) para cosas específicas. Por ejemplo, con JPA puedes poner en una clase cosas como @Entity que le indicarán a la herramienta que esa clase corresponde con una tabla en base de datos, o si usas por ejemplo jax-ws para webservices, poner @WebService a una clase indicará a esta herramienta que esa clase es realmente un WebService y debe generar el código necesario para convertirla en WebService.
La que tú mencionas posiblemente es esta
http://download.oracle.com/javase/6/...ws/Action.html
Se bueno.