viernes, 14 de octubre de 2016

Oracle negó nuevo juicio en disputa de derechos de autor con Google sobre Java

Oracle había afirmado que algunas pruebas fue retenido por Google

Un tribunal federal de California ha negado Oracle otro ensayo en su larga disputa con la infracción de copyright a Google por el uso del código de Java en el sistema operativo Android.

bolsa seca
46% de descuento en la Tierra Pak impermeable seco Bolsa de compresión Saco - Tratar de alerta
Mientras kayak, varar, rafting, canotaje, senderismo, camping o pesca, esta super resistente y
LEE AHORA
Un jurado había aclarado Google de infracción de derechos de autor en mayo de este año, la defensa de la postura de la empresa que el uso de 37 API de Java (interfaces de programación de aplicaciones) en su sistema operativo móvil Android era un uso justo, negando así a Oracle hasta US $ 9 mil millones en daños y perjuicios que que estaba buscando.

Un número de desarrolladores y científicos realizó la copia de Google diciendo que las API, que son las especificaciones que permiten a los programas se comunican entre sí, no eran derechos de autor y cualquier intento de cambio que pudiera obstaculizar la innovación. La administración del presidente Barack Obama tenía en su opinión caras con Oracle y dijo que las API son de derechos de autor como otro código de computadora.

Oracle pidió a la corte para un nuevo juicio por, entre otros motivos, la afirmación de que Google ocultó información durante el descubrimiento de sus planes para integrar aplicaciones de Android con el sistema operativo Chrome se ejecuta en ordenadores de sobremesa y portátiles, para así ampliar el alcance de la infracción más allá de los teléfonos inteligentes y las tabletas .

El juez de distrito William Alsup de la Corte de Distrito de EE.UU. para el Distrito Norte de California en una orden el martes rechazó la petición de Oracle para un nuevo juicio, lo que habría sido el tercero en la controversia.

En 2015, Google comenzó un nuevo proyecto, que se llama internamente como ARC ++. Su objetivo, según registros de la corte era la de "[p] rovide usuarios de Chrome OS con el juego de aplicaciones de Android en Chrome OS sin la acción del revelador."

"ARC ++ correría un caso aislado de Android (con todas las API públicas de Android, incluidos los reescrita con respecto a Java) con el fin de permitir a los usuarios ejecutar todas las aplicaciones de Android en los dispositivos Chrome OS. Google planea incluir su 'Play Store' - aplicación de Google en el que los usuarios pueden comprar y descargar otras aplicaciones de Android - como parte de ARC ++ para facilitar el acceso a esas aplicaciones ", escribió el juez Alsup en su orden.

El juez no ir junto con la reclamación de Oracle que Google había "puesto trabas y había ocultado por completo el proyecto ARC ++." Google se había producido al menos nueve documentos discusiones sobre las metas y los detalles técnicos de ARC ++ en 2015, al menos cinco meses antes del juicio, escribió el juez, quien ha añadido que "el fracaso de Oracle para revisar la ARC ++ documentos es su propia culpa."

Juez Alsup señaló que las pruebas en las ARC ++ no hubiera impactado el juicio en mayo debido a ninguna prueba relacionada con las implementaciones de Android en dispositivos distintos de los teléfonos inteligentes y las tabletas estaban comprendidas en su ámbito de aplicación.

"Bien puede ser cierto que el uso de las API de derechos de autor en ARC ++ (o cualquier otro uso posterior) no se considerará un uso justo, pero que no lo hará, y no significa que el argumento de Google en el uso transformador en cuanto a la original utiliza en ensayo (smartphones y tabletas) fue inadecuada. Que Oracle no pudo detectar el arco ++ documentos en su poder tenían ninguna importancia dentro del ámbito definido en nuestro ensayo ", escribió el juez Alsup.

Oracle había discutido en la propuesta de un nuevo juicio que era un error limitar los dispositivos a los teléfonos inteligentes y tabletas.

puesta en marcha del sistema Android completa en el sistema operativo Chrome de Google es incluso ahora en la etapa de revisión disponible sólo para los desarrolladores y en un conjunto limitado de dispositivos, el juez observó.

La orden del juez también rechazó la demanda de Oracle para un nuevo juicio debido a la exclusión de lo que el juez describió como "prueba de menor importancia y el testimonio" de Stefano Mazzocchi, un miembro del consejo de administración de la Apache Software Foundation en 2008. También rechazó Oracle afirmación de que el tribunal había excluido indebidamente su documento contiene respuestas a la Comisión Europea, que había pedido una explicación de la diferencia entre Google y Sun Microsystems, la empresa que desarrolló Java y luego fue adquirida por Oracle.

Google y Oracle no pudieron ser contactados inmediatamente para hacer comentarios sobre la orden.

Java microservices group busca un menor control de Oracle

El grupo MicroProfile.io prevé la creación de una fundación para gobernar microservicios Java sin un solo proveedor dominante

MicroProfile.io, un grupo que ha establecido para mejorar la empresa de Java para microservicios implementaciones, los planes para formar su propio fundamento.

Se espera que la fundación a caer bajo el paraguas de la Fundación Eclipse, dijo Rich Sharples, director senior de gestión de productos de Red Hat, que ha participado en MicroProfile.io.

Que proporcionaría "justo e incluso el control", sin hablaba del proveedor único, y frente a las responsabilidades como infraestructura legal y técnica, así como las marcas y derechos de autor asignación. MicroProfile.io ha tomado la postura de que Oracle, que supervisa Java, ha sido demasiado dominante en el desarrollo de Java.

"Esperamos que moverse rápido con la tecnología que los desarrolladores pueden jugar de inmediato, sin restricciones, y lo haremos de una manera colaborativa e inclusivo, no sólo grandes proveedores", dijo Sharples. "Vamos a llegar la tecnología de refinado y apto para el propósito entonces estandarizar idealmente a través de la JCP [Java Community Process] en algún momento." Se espera que una solicitud formal de especificación Java que ser presentada para MicroProfile.

Pero Sharples subrayó la necesidad de reformar la JCP, que dijo que no es un organismo de normalización atractiva para muchos porque está dominado por Oracle y tiene reglas de licenciamiento bastante anticuados.

Además, la base proporcionaría una sola entidad para la representación legal, tratará de impulsar la participación y proporcionar publicidad, dijo Sharples.

MicroProfile.io lanzado recientemente la versión 1.0 de MicroProfile, que está destinada a tomar el relevo en el desarrollo de Java Enterprise Edition. Oracle ha sido criticado en los últimos meses por el estancamiento en Java EE, pero la empresa se establece ahora en el desarrollo de poner en marcha para cubrir microservicios y la computación en nube. Oracle también quiere mejorar las relaciones con las facciones como MicroProfile.io y ha expresado su interés en la obra de MicroProfile.io.

Esta historia, "grupo microservicios Java busca un menor control de Oracle", fue publicado originalmente por InfoWorld.

viernes, 23 de septiembre de 2016

Las Anotaciones JAVA - Documented, Target, Inherited y Retention

1-@Documented

@Documented anotación indica que los elementos que utilizan esta anotación debe documentar JavaDoc. Por ejemplo:

java.lang.annotation.Documented
@Documented
public @interface MiAnotacion {
  //cuerpo de la anotacion
}

@MiAnotacion
public class MiClase { 
     //Cuerpo de la clase
}

Mientras que la generación de la Javadoc de la clase MiClase, el @MiAnotacion anotación se incluiría en eso.

2-@Target

En él se especifica en el que podemos usar la anotación. Por ejemplo: En el código de abajo, hemos definido el tipo de destino como el método que significa la anotación a continuación sólo se pueden utilizar en los métodos.

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

@Target({ElementType.METHOD})
public @interface MiAnotacion {

}


public class MiClase {
   @MiAnotacion
   public void miMetodo()
   {
       //Hacer algo
   }
}

Nota: 1) Si no se define ningún tipo de destino que significa anotación se puede aplicar a cualquier elemento.
2) Además de ElementType.METHOD, una anotación siguiente puede tener posibles valores objetivo.
ElementType.METHOD
ElementType.PACKAGE
ElementType.PARAMETER
ElementType.TYPE
ElementType.ANNOTATION_TYPE
ElementType.CONSTRUCTOR
ElementType.LOCAL_VARIABLE
ElementType.FIELD

3-@Inherited

Las señales de anotación @Inherited de que una anotación personalizado que se utiliza en una clase deben ser heredados por todos sus subclases. Por ejemplo:

java.lang.annotation.Inherited

@Inherited
public @interface MiAnotacion {

}

@MiAnotacion
public class ClasePadre { 
  ... 
}

public class ClaseHija extends ClasePadre { 
   ... 
}

Aquí el ClasePadre clase está utilizando @MiAnotacion anotación que está marcado con la anotación @inherited. Esto significa que el ClaseHija subclase hereda el @MiAnotacion.

4-@Retention

Se indica cómo han de permanecer a largo anotaciones con el tipo de anotación.

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
@interface MiAnotacion {
    
}

Aquí hemos utilizado RetentionPolicy.RUNTIME. Hay otras dos opciones también. Vamos a ver qué es lo que significan:
RetentionPolicy.RUNTIME: La anotación debe estar disponible en tiempo de ejecución, para la inspección a través de Java reflexión.
RetentionPolicy.CLASS: La anotación sería en el archivo .class pero no estaría disponible en tiempo de ejecución.
RetentionPolicy.SOURCE: La anotación estaría disponible en el código fuente del programa, no sería ni en el archivo .class, ni estará disponible en el tiempo de ejecución.


Creación de anotaciones personalizadas en JAVA




  • Las anotaciones se crean mediante @interface, seguido del nombre de la anotación como se muestra en el ejemplo siguiente.
  • Una anotación puede tener elementos. Se ven como métodos. Por ejemplo, en el código de abajo, tenemos cuatro elementos. No debemos proporcionar la implementación de estos elementos.
  • Todas las anotaciones se extiende interfaz java.lang.annotation.Annotation. Las anotaciones no pueden incluir cualquier cláusula se extiende.


import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Documented
@Target(ElementType.METHOD)
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface MiAnotacion{
    int studentAge() default 18;
    String studentName();
    String stuAddress();
    String stuStream() default "CSE";
}


Nota: Todos los elementos que tienen valores predeterminados establecidos, mientras se crea anotaciones pueden ser omitidos durante el uso de la anotación. Por ejemplo, si estoy aplicando la anotación anterior a una clase, entonces lo haría así:

@MiAnotacion(
    studentName="Juan",
    stuAddress="uru, Mich"
)
public class MiClase {
...
}

Como se puede ver, no hemos dado ningún valor a los elementos studentAge y stuStream ya que es opcional para establecer los valores de estos elementos (valores por defecto ya se han establecido en la definición de anotación, pero si se desea se puede asignar un nuevo valor durante el uso de la anotación de la misma manera como lo hicimos para otros elementos). Sin embargo tenemos que proporcionar los valores de otros elementos (los elementos que no tienen conjunto de valores por defecto), mientras que el uso de la anotación.

Nota: También podemos tener elementos de matriz en una anotación. Así es como podemos usarlos:

definición anotación:

@interface MiAnotacion {
    int      count();
    String[] books();
}

Uso:

@MiAnotacion(
    count=3,
    books={"PHP", "Java"}
)
public class MyClass {

}

Le permite volver al tema de nuevo: En el ejemplo de anotación personalizada hemos utilizado estos cuatro anotaciones: @Documented, @Target, @Inherited y @Retention. Vamos a discutir en detalle.en el siguiente post.


Las anotaciones incorporadas en Java

Java tiene tres anotaciones incorporadas:



  • @Override
  • @Deprecated
  • @SuppressWarnings




1-@Override

Mientras que sustituir un método en la clase del niño, debemos utilizar esta anotación para marcar ese método. Esto hace que el código legible y evitar problemas de mantenimiento, tales como: mientras se cambia el método de firma de la clase padre, debe cambiar la firma en las clases hijas (donde se utiliza esta anotación) de lo contrario compilador tiraría error de compilación. Esto es difícil de rastrear cuando usted no ha utilizado esta anotación.

Ejemplo:

public class PadreClass {

    public void justoMetodo() {
        System.out.println("Metodo de la clase padre");
    }
}


public class HijaClass extends MyParentClass {

    @Override
    public void justoMetodo() {
        System.out.println("Metodo de la clase hija");
    }
}

Creo que el ejemplo se explica por sí solo.


2-@Deprecated

@Deprecated anotación indica que el elemento de marcado (clase, método o campo) es obsoleto y ya no debe ser utilizado. El compilador genera una advertencia cada vez que un programa utiliza un método, clase, o un campo que ya ha sido marcado con la anotación @Deprecated. Cuando está en desuso un elemento, sino que también debe ser documentada mediante la etiqueta Javadoc @deprecated, como se muestra en el siguiente ejemplo. Tome nota de la diferencia con el caso @Deprecated y @deprecated. @deprecated se utiliza a modo de documentación.

Ejemplo:

@Deprecated
public void algunMetodo(){
    // Hacer algo
}

Ahora, siempre que cualquier programa quiera utilizar este método, el compilador generaría una advertencia.


3-@SuppressWarnings

Esta anotación instruye compilador de hacer caso omiso de las advertencias específicas. Por ejemplo, en el código de abajo, yo estoy llamando a un método en desuso (supongamos que el método deprecatedMethod () está marcado con la anotación @Deprecated) por lo que el compilador debería generar una advertencia, sin embargo estoy usando @@ SuppressWarnings anotación que suprimiría que deprecation advertencia.

@SuppressWarnings("deprecation")
    void miMetodo() {
        myObject.deprecatedMethod();
   }

Las anotaciones Java tutorial con ejemplos

Anotaciones Java nos permiten añadir información de metadatos en nuestro código fuente, aunque no son una parte del programa en sí. Se han añadido anotaciones al java JDK 5. Anotación no tiene efecto directo sobre el funcionamiento del código que anotar (es decir, que no afecta a la ejecución del programa).

En este tutorial vamos a cubrir siguientes temas: Uso de anotaciones, cómo aplicar las anotaciones, que están disponibles en el Java y cómo crear anotaciones personalizados predefinidos tipos de anotación.

¿Cuál es el uso de anotaciones?

1) Instrucciones para el compilador: Hay tres anotaciones incorporadas disponibles en Java (@Deprecated, @Override y @SuppressWarnings) que se pueden utilizar para dar ciertas instrucciones al compilador. Por ejemplo la anotación @ Override se utiliza para dar instrucciones compilador que el método anotado es reemplazar el método. Más información sobre estas anotaciones incorporadas con ejemplo se discute en las siguientes secciones de este artículo.

2) en tiempo de compilación instructores: Las anotaciones pueden proporcionar instrucciones en tiempo de compilación al compilador que se pueden utilizar también en otras herramientas de construcción sofware para la generación de código, archivos XML, etc.

3) Las instrucciones en tiempo de ejecución: Podemos definir anotaciones para estar disponible en tiempo de ejecución que podremos acceder usando Java reflexión y se puede utilizar para dar instrucciones al programa en tiempo de ejecución. Vamos a discutir esto con la ayuda de un ejemplo, más adelante en este mismo post.

Anotaciones básicas

Una anotación comienza siempre con el símbolo @ seguido del nombre de la anotación. El símbolo @ indica al compilador que se trata de una anotación.

Por ejemplo, @Override
Aquí @ símbolo representa que esta es una anotación y el accionamiento es el nombre de esta anotación.

Donde podemos utilizar las anotaciones?
Las anotaciones pueden ser aplicados a las clases, interfaces, métodos y campos. Por ejemplo se aplica la anotación de abajo para el método.


@Override
void myMethod() { 
    //Do something 
}

Lo que esta anotación está haciendo exactamente aquí se explica en la siguiente sección, pero para ser breve que está instruyendo compilador que myMethod () es un método de alteración temporal que está reemplazando el método (myMethod ()) de la superclase.