El propósito de escribir este artículo es resumir algunas de mis experiencias en el uso de Java a lo largo de los años, principalmente relacionados con algunos puntos básicos de conocimiento de Java, por lo que también espero compartirlo con programadores de Java que acaban de comenzar y posibles novatos que tienen la intención de ingresar a la industria del desarrollo de Java. Espero darte algo de experiencia y dejarte aprender y usar Java mejor.
El contenido principal de esta introducción es la parte relacionada con J2SE. Además, introduciremos un contenido relacionado con J2EE relacionado con cada marco en Java en el futuro.
Después de tantos años de desarrollo de Java y combinado con cierta experiencia en la entrevista de desarrolladores de Java, creo que lo principal para J2SE es dominar el siguiente contenido.
1. Relacionado con JVM (incluidas las características de cada versión)
Para aquellos que se están involucrando en Java, el conocimiento relacionado con JVM no necesariamente necesita ser profundamente entendido, por lo que puede tener una comprensión simple de los conceptos en él. Sin embargo, para un desarrollador senior con más de 3 años de experiencia en Java, es casi inaceptable no conocer JVM.
Como base para la operación de Java, es difícil creer que las personas que no conocen JVM pueden comprender completamente el idioma Java. Cuando entrevisté a desarrolladores con más de 3 años de experiencia en Java, JVM era casi una pregunta que debe ser imprescindible. Por supuesto, JVM no es la única pregunta de entrevista que determina la calidad de las capacidades técnicas, pero puede probar el nivel de capacidades de desarrollo de Java.
En la categoría JVM, creo que el conocimiento que debe ser dominado es:
Modelo y estructura de memoria JVM
Principio de GC, ajuste de rendimiento
Ajuste: volcado de hilos, analizar la estructura de la memoria
Estructura de código de bytecodo binario de clase, sistema de cargador de clase, proceso de carga de clase, proceso de creación de instancias
Proceso de ejecución de métodos
Nuevas características proporcionadas por varias actualizaciones de versión principal de Java (requiere una comprensión simple)
2. Operación Java (elementos esenciales básicos)
Esto puede ser muy simple de ver. ¿Quién no puede ejecutar un programa Java? Pero muchas veces, solo ejecutamos programas Java a través del IDE. ¿Cómo ejecuta el IDE subyacente Java Programas? Mucha gente no entiende.
Este punto de conocimiento es lo más básico que los desarrolladores de Java necesitan dominar. Cuando son principiantes, lo primero es enseñarle cómo ejecutar programas Java en la línea de comandos, pero muchas personas se olvidan de esto una vez que hayan terminado de aprender Java y usar el IDE. ¿Por qué enfatizas saber esto? Después de conocer la forma más pura de iniciar Java, puede analizar la cantidad de directorios iniciados en ese momento, cómo ejecutar el nombre, qué parámetros son, ya sea que falte, etc. cuando hay un problema con el inicio. Esto lo ayudará a resolver problemas extraños posibles relacionados con el entorno en el desarrollo real.
El conocimiento que necesita dominar aquí es:
Javac compila el archivo Java como archivo de clase
Uso de comandos Java, cómo iniciar la clase Java con el paquete en la línea de comandos
Los diversos caminos involucrados en el programa Java (classpath, java.library.path, directorio de inicio donde se ejecuta Java, etc.)
3. Tipo de datos
No hay mucho que decir sobre este artículo, no es más que dominar los tipos básicos y los tipos de objetos en Java. Puede obtener más información sobre cómo JDK se convierte automáticamente, incluido el embalaje y el unboxing, etc. También debe prestar atención para evitar el juicio de los tipos iguales después del embalaje.
Puntos principales de conocimiento:
Tipos básicos: int, largo, flotante, doble, booleano ,. . .
Tipos de objetos correspondientes: entero y otros tipos a la conversión de tipos básicos, el embalaje y la unboxing
Tipo de objeto: igual, hashcode
Características del tipo de cadena
4. Objetos e instancias, creación de objetos
En este sentido, los desarrolladores deben comprender los conceptos de clase e instancia y las diferencias entre ellos, lo cual es una base para las características orientadas a objetos de Java. Los principales puntos de conocimiento son:
Conceptos de clase e instancia
Proceso de creación de instancias:
1. Sin herencia: asignar espacio de memoria, inicializar variables y llamar a los constructores
2. Herencia: maneja acciones estáticas, asigna el espacio de memoria, define las variables como valores iniciales, maneja la inicialización en la definición y ejecuta el constructor
Puntos a tener en cuenta:
Las propiedades estáticas, etc. se inicializan desde la clase base-> subclases
Características relacionadas con el método de construcción sin parámetros predeterminado
5. Control de acceso
Esta es también una base para las características de encapsulación de Java, y lo que debe dominarse es:
El efecto de modificación de Public Protected Predet Prevess para clase, método y campo
6. Control de procesos
Los conceptos básicos del control del proceso Java, aunque algunas sintaxis no se usan necesariamente comúnmente, deben entenderse y usarse en los lugares correctos.
Lo que necesita ser dominado es:
Sintaxis para el control de procesos como si, interruptor, bucle, para, mientras
7. El concepto de programación orientada a objetos
Este es un concepto central de Java que debe ser dominado por cualquier desarrollador de Java. Muchas características o puntos de conocimiento en Java están relacionados con el concepto de programación orientada a objetos en Java. En mi lugar, un buen desarrollador no solo necesita comprender estas características (puntos de conocimiento), sino que también necesita saber cómo estos objetos se reflejan en el concepto de programación orientada a objetos en Java, que es más propicio para los desarrolladores para dominar el lenguaje de desarrollo de Java y otros lenguajes de programación orientados a objetos. Acabo de enumerar brevemente aquí, y los principales puntos de conocimiento incluyen:
Tres características principales orientadas a objetos: encapsulación, herencia y polimorfismo; sus respectivos conceptos de definición, cuáles son sus características reflejadas y sus respectivos escenarios de uso
El concepto de distribución múltiple estática y distribución única dinámica
Concepto y uso de sobrecarga
Herencia: implementaciones de interfaz múltiple, herencia de clase base única
Resumen, clase abstracta, interfaz
Polimorfismo: concepto y uso de cobertura de métodos
Devolución de llamada de interfaz
8. Estático
Los atributos estáticos también se usan con frecuencia en el desarrollo diario de Java. Debe comprender el uso relacionado con las palabras clave estáticas, y también usarlas junto con otras palabras clave, como si pueden usarse junto con palabras clave como abstracto y final.
Las cosas principales para dominar son:
Definición de propiedades estáticas, uso y cómo inicializar la clase al cargar
Definición y uso de métodos estáticos
Definición y uso de clases estáticas
Definición e inicialización de bloques de código estático
9. Puntos de conocimiento básico
Aquí enumeramos principalmente algunos puntos de conocimiento Java dispersos que no están clasificados sistemáticamente. También se usa mucho en el desarrollo diario. En realidad, hay mucho contenido en esta área. En la actualidad, solo los he resumido por el momento aquí:
Incluido:
igual, hashcode, string/stringbuffer, final, finalmente, finalice
10. Marco de colección
Esta es una parte que necesita más dominio. Se puede decir que no hay necesidad de marcos de recolección sin usarlos. Esto es muy importante. Sin embargo, los puntos de conocimiento aquí no son difíciles, pero es mejor comprender el método de implementación interna para las colecciones, porque esto lo ayudará a elegir el marco apropiado en diferentes escenarios para resolver el problema. Por ejemplo, si tiene un conjunto de 10,000 elementos, a menudo debe realizar las operaciones de juicio. Si conoce las características de la colección o implementación interna, es fácil tomar la decisión correcta.
El siguiente contenido se incluye aquí (no se incluye la correlación de concurrencia):
El sistema de marco de colección: colección básica, mapa
Contenido de implementaciones establecidas específicas, lista, conjunto, mapa de implementaciones específicas, estructuras internas, métodos especiales, escenarios aplicables, etc.
Uso de colecciones, etc.
11. Marco de excepción
Las excepciones pueden no tomarse tan en serio en el desarrollo de Java. En general, al encontrar excepciones, se lanzarán directamente, o simplemente las atraparán y procesarán, y no tendrán ningún impacto importante en el funcionamiento general del programa. Sin embargo, en el diseño y el desarrollo de nivel empresarial, el diseño y el manejo de anormalidades a menudo están relacionados con la robustez general del sistema. Para los desarrolladores, el manejo de excepciones en un buen sistema debe estar unificado y evitar una gran cantidad de excepciones manejando la lógica dispersa en todas partes; Para los sistemas, las excepciones deben ser controlables y fáciles de operar y mantener. Después de aparecer algunas excepciones, debería haber una manera de tratarlas y saber cómo operar y mantener. Por lo tanto, aunque el marco de excepción es muy simple, para todo el desarrollo de aplicaciones de nivel empresarial, el manejo de excepciones es muy importante. Para manejar bien las excepciones, debe comprender el sistema de excepción en Java.
No hay muchos puntos de conocimiento para dominar en esta parte, principalmente:
Sistema anormal:
Lanzable
Excepción
RuntimeException
Error
La diferencia entre RuntimeException y la excepción general, métodos de procesamiento específicos, etc.
12.Java IO
IO no solo es simple en Java para leer y escribir archivos, sino que también incluye todas las operaciones de entrada y salida, como leer y escribir de redes de socket. Por ejemplo, leer contenido de publicación en solicitudes HTTP estándar también es un proceso de salida, etc.
Para IO, Java no solo proporciona API básicas relacionadas con la entrada y la salida, sino que también proporciona algunas API de lector de operaciones y escritores simplificados, que también son muy importantes en algunos desarrollos (proyectos que involucran una gran cantidad de operaciones de IO). También involucrará (registros, lectura y redacción de archivos temporales, etc.) en el desarrollo diario.
Los principales puntos de conocimiento aquí son:
Sistema básico de IO: incluyendo InputStream, OutputStream, Reader/Writer, Lectura de archivos, Varias lectura de transmisión, etc.
El concepto de NIO, métodos de uso específicos y escenarios de uso
13. Concurrencia multiproceso
La lectura múltiple es una parte relativamente difícil en Java. Si se usa correctamente el subproceso múltiple, puede mejorar efectivamente la tasa de uso de la CPU y mejorar la eficiencia general del sistema, especialmente cuando hay una gran cantidad de operaciones de IO bloqueando; Pero también es una espada de doble filo. Si no se usa bien, el sistema no solo no mejorará en gran medida o no mejorará, sino que también provocará problemas como la depuración entre múltiples hilos.
Hay muchos contenidos en múltiples lecturas. Acabo de explicar brevemente los puntos de conocimiento que deben dominarse en Java en el uso inicial de la lectura múltiple. En el futuro, si tiene la oportunidad de introducir algunas características avanzadas en detalle, tendrá una introducción detallada a los escenarios de uso de algunas características avanzadas.
Implementación múltiple y inicio
Diferencia entre invocatoria y ejecutable
Syncrhoized, características y comparaciones respectivas de Reentrantlock
Piscina
Obtener resultados de ejecución de forma asincrónica
paquete concurrente
cerrar
..
14. Red
Java también proporciona API que pueden operar directamente el protocolo TCP y el protocolo UDP. Cuando es necesario enfatizar el rendimiento de la red, la comunicación se puede usar directamente con TCP/UDP. Puede ver el uso de estas API relacionadas al ver el código fuente de Tomcat y otros. Sin embargo, en general, TCP rara vez se usa directamente, y se utilizan marcos como Mina y Netty para su procesamiento. Debido a que no hay mucho desarrollo en esta área, no los enumeraré en detalle.
15. Procesamiento de tiempo y fecha
Para casi todas las solicitudes, el procesamiento de tiempo y fecha no se puede evitar, pero el uso de API relacionadas con el tiempo antes de JDK8 no es amigable. En esa época, podrían elegirse marcos de tiempo como Joda. Después del lanzamiento de JDK8, la nueva API de Time Básicamente integra las ventajas de otros marcos y puede usarse directamente.
Para los desarrolladores de Java, deben ser competentes en el uso de API para lidiar con el tiempo y las fechas.
Los puntos de conocimiento específicos ya no se enumerarán. Escribiré un artículo especial en el futuro para resumir el uso de la API de hora y fecha en JDK8.
16.xml analizador/JSON
De hecho, ninguno de estos dos contenidos es el contenido en J2SE, pero en el desarrollo diario, la interacción con otros programas y archivos de configuración es cada vez más inseparable del análisis de estos dos formatos.
Sin embargo, para un desarrollador, poder comprender algunos principios y métodos de análisis específico de XML/JSON lo ayudará mejor a elegir la forma correcta para usted en cada escenario específico para que su programa sea más eficiente y robusto.
XML: Debe comprender los principios básicos del análisis de DOM y el análisis de saxo y sus respectivos escenarios aplicables
JSON: Debe comprender el uso de algunos marcos JSON de uso común, como Jackson, Fastjson, GSON, etc.
17. Uso de Maven
Maven no es un contenido en Java, pero Maven es revolucionario y aporta una gran comodidad al desarrollo de Java. A partir de la introducción y la gestión de las dependencias, las actualizaciones y las versiones de los procesos de desarrollo, e incluso las actualizaciones de versión, el uso de Maven puede simplificar en gran medida la complejidad en el proceso de desarrollo, ahorrando así mucho tiempo. Se puede decir que Maven se ha convertido en la configuración estándar para los desarrolladores de Java. Así que también considero a Maven como un punto de conocimiento básico para un desarrollador de Java. Agregaré algunas de mis experiencias y habilidades para usar Maven en el futuro, por lo que no entraré en detalles aquí.
18. Genéricos
Este es un nuevo concepto introducido por JDK5. En realidad es un azúcar sintáctico. Será un poco conveniente al escribir código Java. En general, para el desarrollo de aplicaciones o negocios, solo debe usarse simplemente, y no necesariamente puede usarse para definir genéricos. Sin embargo, se utilizarán algunos componentes públicos básicos. Puede echar un vistazo más de cerca a esta parte cuando sea necesario. En general, se puede usar simplemente.
19. Marcado
También se introdujo después de JDK5. Spring es un marco excelente, y comenzó con XML como el archivo de configuración estándar. Sin embargo, después de Spring3, especialmente después del aumento de Spring-Boot, se recomienda cada vez más usar anotaciones para simplificar el archivo de configuración XML. Para los desarrolladores, puede ahorrar mucho tiempo en la configuración XML. Sin embargo, la desventaja es que la anotación está dispersa en varias clases. A diferencia de XML, puede tener una comprensión y gestión global de todas las configuraciones, por lo que no hay forma de reemplazar completamente todo el XML. Para los desarrolladores comunes, solo puede usar anotaciones. Algunos desarrolladores con componentes públicos pueden necesitar comprender la definición y la implementación de anotaciones, y puede mirar más de cerca cuando los necesite.
20.rmi
RemotemethodinVocation es una interfaz de llamadas remota exclusiva del lenguaje Java, y es relativamente simple y conveniente de usar. Sin embargo, cuando se necesitan situaciones cruzadas, se necesitan otros métodos como WebService para admitirlo. En términos generales, los programas no necesitan usar RMI, pero pueden usarse en situaciones específicas. Estoy en un proyecto, usando RMI para controlar el comienzo y detenerse remoto del programa.
21.jni
La interfaz nativa de Java permite que los métodos de interfaz local se llamen en Java, que generalmente se usa para llamar al código C/C ++. Cabe señalar que el problema de la ruta de cargar el archivo SO/DLL en Java no es complicado llamar a la interfaz en sí, pero a menudo lleva mucho tiempo cargar la biblioteca de interfaz local requerida.
Lo anterior es solo una breve introducción a mis puntos de vista y presentaciones en estos puntos básicos de conocimiento de Java y puntos técnicos. Todos estos contenidos se derivan de algún resumen del uso de Java a lo largo de los años. Espero dar algo de experiencia a aquellos que acaban de estar expuestos a Java o que pretendan desarrollarse a partir de Java. Espero aprender y usar Java de manera más eficiente y evitar perder un tiempo valioso. Todavía hay un contenido incompleto en esto, y se agregarán a través de futuros artículos. Debido a las habilidades personales limitadas, por supuesto, habrá algunos errores y omisiones. Bienvenido para corregirme, discutir juntos y mejorar este artículo, con la esperanza de que realmente pueda ayudar a las personas necesitadas.
El resumen anterior de los puntos de conocimiento de Java: algunas sugerencias para los principiantes de Java (deben leer para principiantes) son todo el contenido que comparto con ustedes. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.