Resumen de aprendizaje de Java más reciente de 2021 --- características del lenguaje Java

El lenguaje Java es simple

La gramática del lenguaje Java está muy cerca del lenguaje C y del lenguaje C ++. En cierto sentido, evolucionó de C y C ++, lo que facilita el aprendizaje y el uso de la mayoría de los programadores .

Para C ++, se ha simplificado y mejorado hasta cierto punto, como: el uso de interfaces en lugar de la herencia múltiple compleja y los punteros de cancelación , y también mediante la realización de un mecanismo automático de recolección de basura , lo que simplifica enormemente el trabajo de administración de liberación de recursos del programador.

Proporciona una gran cantidad de bibliotecas de clases y documentos API , así como kits de herramientas de desarrollo de terceros , así como una gran cantidad de proyectos de código abierto basados ​​en Java para ayudar a los programadores a aprender de ellos. JDK es uno de los códigos de fuente abierta. Lectores puede analizar el código fuente del proyecto para mejorar su nivel de programación.

El lenguaje Java está orientado a objetos

La orientación a objetos es la base del lenguaje Java y una característica importante del lenguaje Java. Orientado a objetos se refiere al objeto como la unidad básica, incluidos los atributos y métodos. Objeto deEl estado se expresa mediante atributos, Del objetoCompórtate de una manera

La tecnología orientada a objetos hace que el desarrollo de aplicaciones sea simple y fácil de usar, ahorrando código.En resumen, el lenguaje Java es un lenguaje de programación puro orientado a objetos.

Se distribuye el lenguaje Java

La distribución incluye principalmente dos aspectos principales, a saber , distribución de operaciones y distribución de datos.

La distribución de operaciones se refiere a la disposición de operaciones relacionadas en múltiples hosts diferentes. La distribución de datos consiste en almacenar datos en diferentes hosts en múltiples redes, utilizando URL (Uniform Resource Locator) para acceder a los objetos de red, los métodos de acceso y el acceso al sistema local es similar.

El lenguaje Java tiene una capacidad de red potente y fácil de usar, que es muy adecuada para programas informáticos distribuidos.
El lenguaje Java admite el desarrollo de aplicaciones de Internet. Existe una interfaz de programación de aplicaciones de red (java.net) en la interfaz de programación de aplicaciones Java básica, que proporciona una biblioteca de clases para la programación de aplicaciones de red, que incluye URL, URLConnection, Socket, ServerSocket, etc. El mecanismo RMI (Remote Method Activation) de Java también es un medio importante para desarrollar aplicaciones distribuidas.

<< Una explicación fácil de entender de lo que se distribuye en Java >> enlace

El lenguaje Java es multiproceso

El mecanismo de subprocesos múltiples permiteLa aplicación ejecuta múltiples tareas en paralelo al mismo tiempoEl lenguaje Java proporciona un mecanismo de sincronización entre varios subprocesos . Estos mecanismos de sincronización correspondientes pueden garantizar que diferentes subprocesos puedan compartir datos correctamente. El mecanismo de subprocesos múltiples hace que el programa tenga una mejor interactividad y tiempo real .

El lenguaje Java es de alto rendimiento

Java es un lenguaje que se compila y luego se interpreta, por lo que no es tan rápido como un lenguaje completamente compilado. Sin embargo, en algunos casos, el rendimiento es muy importante. Para soportar estas situaciones, los diseñadores de Java han creado un compilador "justo a tiempo" que puede traducir el código de bytes de Java en código de máquina para una CPU específica (unidad central de procesamiento) en tiempo de ejecución. es lograr la compilación completa. El formato de código de bytes de Java está diseñado para tener en cuenta las necesidades de estos compiladores "justo a tiempo", por lo que el proceso de generación de código de máquina es bastante simple y puede producir un código bastante bueno.
En comparación con los lenguajes de secuencias de comandos de alto nivel interpretados, Java es de hecho de alto rendimiento. De hecho, la velocidad de ejecución de Java se acerca cada vez más a C ++ con el desarrollo de la tecnología de compilación JIT (Just-In-Time).

El lenguaje Java es multiplataforma

La llamada multiplataforma esSignifica que el software puede ejecutarse normalmente en cualquier entorno informático sin estar restringido por el hardware y el sistema operativo de la computadora.. Esta es la tendencia del desarrollo de software y el objetivo perseguido por los programadores. La razón para decir esto es porque hay muchos tipos de hardware de computadora y diferentes sistemas operativos. Los diferentes usuarios y empresas tienen sus propias preferencias de entorno informático diferentes. Para que el software se ejecute normalmente en estos entornos diferentes, debe ser independiente de Estas plataformas.
En el lenguaje Java, la máquina virtual que viene con Java logra un buen rendimiento multiplataforma. El código de bytes binario generado por el código fuente de Java después de la compilación es independiente de la plataforma.Cuando la máquina virtual Java ejecuta el código de bytes, interpreta el código de bytes en instrucciones de la máquina para su ejecución en la plataforma específica. Es por eso que Java puede escribir una vez, ejecutar en cualquier lugar (compilar una vez, ejecutar en cualquier lugar). La máquina virtual Java proporciona una barrera desde el código de bytes hasta la plataforma de hardware y el sistema operativo subyacentes, lo que convierte al lenguaje Java en una plataforma cruzada.

El lenguaje Java es portátil

La portabilidad proviene de plataformas cruzadas, además, Java también regula estrictamente la longitud de cada tipo de datos básicos. El sistema Java en sí también tiene una gran portabilidad. El compilador de Java se implementa en Java y el entorno operativo de Java se implementa en ANSI C.

El lenguaje Java es seguro

En el lenguaje Java, se elimina el puntero y la sintaxis de publicación de contenido similar al lenguaje C, lo que evita efectivamente el funcionamiento ilegal de la memoria. El código solo se puede ejecutar después de la verificación, por lo que es imposible que los programas Java no autorizados dañen la plataforma del sistema. . La mayor ventaja del comportamiento de Java es que Java puede escribir antivirus y sistemas reparables . Java se usa generalmente en entornos de red. Por esta razón, Java proporciona un mecanismo de seguridad para prevenir ataques de código malicioso, lo que puede mejorar la seguridad del sistema. . Sexo.

¿Por qué es seguro? ¡Empecemos por su mecanismo! !
El cargador de clases JVM cargará y verificará el archivo .java compilado. En el proceso de verificación, además de verificar si cumple con los estándares de compilación, también verificará si hay algún código para los archivos del sistema operativo en el código. Si por lo tanto, es posible que no le permita pasar la verificación. Entonces, hablemos de jvm. Jvm es un área de memoria independiente abierta en el sistema. Cuando su código se ejecute, estará en una caja de arena separada (¿qué es la caja de arena? Lo agregaré más tarde ...) de todos modos. En esto área, tampoco se le permite acceder a otras áreas fuera del bloque de memoria. Por ejemplo, si desea acceder a los archivos del disco de la computadora a través del código, es imposible.

El lenguaje Java es robusto

1. El lenguaje Java es un lenguaje fuertemente tipado, es decir, se realiza una gran cantidad de verificaciones de tipos durante la compilación y el tiempo de ejecución para evitar la aparición de tipos de datos no coincidentes.
2. El lenguaje Java está diseñado con una función de recolección automática de basura para evitar la memoria. errores de asignación.
3. El lenguaje Java ha diseñado un mecanismo de manejo de excepciones.

El sólido mecanismo de escritura, el manejo de excepciones y la recolección automática de basura del lenguaje Java son garantías importantes para la solidez de los programas Java. Descartar punteros es una buena elección para Java.El mecanismo de verificación de seguridad de Java hace que Java sea más robusto

El lenguaje Java es dinámico

Java es esencialmente un lenguaje estático, no un lenguaje dinámico. La característica notable de los lenguajes dinámicos es que pueden cambiar la estructura del programa o los tipos de variables cuando el programa se está ejecutando.Los lenguajes dinámicos típicos incluyen Python, ruby, javascript, etc.Java no es un lenguaje dinámico, pero Java tiene cierto grado de dinámica.,
Manifestado en los siguientes aspectos:

  • Mecanismo de reflexión
  • Operación dinámica de bytecode;
  • Compilación dinámica;
  • Ejecute otro código de secuencia de comandos;

1. Mecanismo de reflexión

El mecanismo de reflexión se refiere a clases que se pueden cargar y detectar en tiempo de ejecución, y usan clases que son completamente desconocidas durante la compilación.. Sabemos que cuando se carga la clase, se genera un objeto de tipo Class en la memoria del montón (una clase tiene solo un objeto Class). Este objeto contiene información completa sobre la estructura de la clase, a través de la cual puede conocer la información de la estructura de la clase, como los métodos y las propiedades de la clase.

y entoncesA través de un objeto Class de una clase, podemos crear dinámicamente instancias , llamar a métodos , acceder a propiedades, etc.. Cuando se carga una clase, la JVM genera automáticamente un objeto Class. El objeto Class es la fuente de reflexión. La premisa de utilizar el mecanismo de reflexión es obtener el objeto Class de la clase.
La descripción de Class es la siguiente: Las
instancias de la clase Class representan clases e interfaces en una aplicación Java en ejecución. Una enumeración es un tipo de clase y una anotación es un tipo de interfaz. Cada matriz también pertenece a una clase que se refleja como un Objeto de clase compartido por todas las matrices con el mismo tipo de elemento y número de dimensiones. Los tipos primitivos de Java (boolean, byte, char, short, int, long, float y double) y la palabra clave void también se representan como objetos de clase.
La clase no tiene un constructor público, sino que la máquina virtual Java construye automáticamente los objetos de clase a medida que se cargan las clases y mediante llamadas al método defineClass en el cargador de clases.

Las operaciones comunes del mecanismo de reflexión son:

  • Cargar clases de forma dinámica y obtener información de clases de forma dinámica, como constructores, métodos, atributos, etc .;
  • Construir objetos dinámicamente;
  • Llame dinámicamente a cualquier método (público y privado), constructor, etc. de clases y objetos;
  • Para acceder a atributos arbitrarios (públicos y privados), al acceder a atributos privados, debe establecer el atributo setAccessible en verdadero. En este momento, dígale a la JVM que no realice controles de seguridad, puede preguntar directamente, y porque no se realizan controles de seguridad. , se mejora la eficiencia;
  • Procesamiento de anotaciones;
  • Obtenga información genérica;

El mayor problema con el mecanismo de reflexión es el problema de rendimiento: si se usa mucho el reflejo, el rendimiento se reducirá considerablemente.

2. Operación de código de bytes

La operación del código de bytes en tiempo de ejecución es más eficiente que la sobrecarga de reflexión y puede lograr las siguientes funciones:

  • Genere dinámicamente nuevas clases;
  • Cambiar dinámicamente la estructura de una determinada clase, como agregar, eliminar, modificar propiedades o métodos, etc .;
  • Las bibliotecas de manipulación de
    códigos de
    bytes
    comunes son: -BCEL -ASM -CGLIB
    -Javassist

3. Agencia

Hay dos tipos de agentes en Java: agentes estáticos y agentes dinámicos .
El proxy estático es mostrar el código fuente para crear un proxy de clase.Cuando hay más proxies, es necesario escribir una gran cantidad de código fuente de clase de proxy;

Un proxy dinámico es una clase de proxy que crea dinámicamente una clase. Por ejemplo, una clase de proxy se puede generar dinámicamente a través de JDK, o una clase de proxy se puede crear dinámicamente mediante operaciones de código de bytes. Los pasos para crear dinámicamente una clase de proxy a través de Proxy e InvocationHandler proporcionados por el JDK son los siguientes:

  1. Definir la interfaz
  2. Proporcionar clase de implementación
  3. Implementar InvocationHandler
/**
 * 定义接口
 * */

public interface UserDao
{
    
    
   public void add();
}

  /**
    * 实现类
 * */

public class UserDaoImpl  implements UserDao
{
    
    
    public void add()
    {
    
    
    System.out.println("adduser");
    }

}

/**
   * InvocationHandler
 * */
public class ProxyFactory  implements InvocationHandler

{
    
    
     private Object real;
     public ProxyFactory(Object real)
     {
    
    
          this.real=real;
     }   
    /**
     * 通过Proxy来返回代理对象
 * */
     publicObject getProxyObject()
     {
    
    
         returnProxy.newProxyInstance(ClassLoader.getSystemClassLoader(),real.getClass().getInterfaces(),this);
     }

     @Override
     public Object invoke(Object proxy, Method method, Object[] args)
               throws Throwable
     {
    
    
          System.out.println("logging..........");
          Object result=method.invoke(real, args);
          return result;
     }

 

}

Supongo que te gusta

Origin blog.csdn.net/m0_51755061/article/details/113099662
Recomendado
Clasificación