Red de conocimiento informático - Aprendizaje de programación - ¿Qué conocimientos deben dominar los programadores de JAVA?

¿Qué conocimientos deben dominar los programadores de JAVA?

Déjame darte una referencia.

¿Cuáles son las condiciones que debe poseer un ingeniero de software Java calificado?

Esta pregunta es algo que siempre he querido saber. Pero se divide en muchos aspectos...

Por ejemplo, ¿es dominar tecnologías específicas,

o tener una gran capacidad de autoaprendizaje?

El software actual se actualiza y mejora muy rápidamente.

No importa qué conocimiento sea, cuando realmente lo domines, es posible que lo hayas eliminado.

Así que esto requiere que sigamos aprendiendo...

Así que la capacidad de autoaprendizaje es muy importante.

Pero creo que la capacidad de autocontrol es más importante ... (Triste...hoy vi anime todo el día...)

Me considero una persona con poco autocontrol...

Está bien, hablemos de los aspectos técnicos.

¿Qué conocimientos específicos debemos dominar ahora?

Aquí realmente envidio a los programadores .net...

Solo hay un .net framework (.net framework) de principio a fin,

Eso es Estoy muy concentrado en aprenderlo en profundidad y no tengo que preocuparme por ser eliminado...

En cuanto a Java, Qiaqia y otros frameworks están en todas partes, y cada uno tiene sus propias fortalezas. .

Esto inevitablemente requiere que las personas pasen por el dolor de la selección... (aunque los principios son similares)

Y se deben utilizar diferentes combinaciones según las diferentes empresas...

Esto Hay n tipos de soluciones de integración... (caída...)

Así que es casi imposible aprenderlas todas...

Aunque Este es el caso, es un poco desafiante. Eso es interesante... Jaja...

Entonces, ¿qué conocimientos específicos debe dominar un ingeniero de software Java calificado?

El siguiente es un resumen desde mi perspectiva personal. Si hay alguna deficiencia, deje que los expertos la señalen.

(ps: solo enumero los conocimientos de uso común)

El primero es, por supuesto, el propio lenguaje Java. El fundador del lenguaje Java dijo una vez "Java=C++--".

¿Qué significa? El lenguaje Java está basado en C++ menos algunas cosas innecesarias, lo que lo hace más práctico y productivo.

La sintaxis del lenguaje Java es muy simple y no tan complicada como la de C++ (he estado expuesto a C++... triste experiencia...)

Muchas estructuras de datos más complejas. en Java Ambos se pueden implementar fácilmente, pero C++ es más problemático.

La gran razón es que Java es una estructura de raíz única.

Y el mecanismo de recolección de basura de Java también tiene mucho crédito (el mecanismo de recolección de basura de .net también es una inspiración). Java )

Pero si quieres entender Java profundamente, todavía requiere mucho esfuerzo...

Por ejemplo, necesitas aprender el comando javap para descompilar archivos java. y luego entenderlos. Esos resultados descompilados...

De esta manera puedes entender los principios del lenguaje Java.

En muchos casos el código es diferente, pero el bytecode final producido es el mismo.

También hay algunos casos en los que, aunque los códigos son sólo ligeramente diferentes, la eficiencia es muy diferente.

(Por ejemplo, la diferencia entre el StringBuilder y StringBuffer recién agregados en JDK5)

Todos estos pueden reflejarse en el código de bytes.

No diré más sobre el lenguaje Java ya que no es el tema central de este artículo.

En resumen, aprender bien el lenguaje Java es la base de la base.

En segundo lugar, cuando hablamos del lenguaje Java, no podemos dejar de hablar del lenguaje orientado a objetos (OO).

Gran parte de la creación del lenguaje Java es generar un lenguaje OO productivo.

¿Por qué dices eso?

Aunque la idea de OO se propuso en los primeros años, esos lenguajes OO puros no tenían ninguna productividad.

(Como famoso: Smalltalk es 100% OO)

Y Java presta más atención a la productividad manteniendo un alto grado de OO.

(ps: Java es 98% OO, incluidos 8 tipos de datos básicos, palabras clave estáticas, operadores, etc., estos no son OO)

Entonces, con el desarrollo de la ingeniería de software, La idea de una OO enorme es muy importante.

Bien, aquí lo tienes si entiendes lo anterior y tienes una idea general. Luego podrás continuar aprendiendo:

Si quieres dominar las cosas más esenciales del lenguaje Java, te sugiero que crees algunas pequeñas aplicaciones de escritorio.

Entre ellos, aprenderás otros conocimientos:

Concurrencia, IO, GUI, AWT, Event, Listener, Socket, Reflect y otras cosas más profundas en Java.

(Por supuesto, solo necesita comprender algunas cosas, porque algunas cosas no se utilizarán en los sistemas de estructura B/S en el futuro...

Si desea participar en Sistemas integrados en el desarrollo futuro, necesitas saber más sobre estos

Desafortunadamente, no he pensado en hacer eso todavía...

Aún recuerdo cuando aprendí por primera vez. Acerca de los eventos en AWT Después de escuchar la implementación de Listener, creo que los diseñadores de JDK son realmente asombrosos. El diseño es tan inteligente que siento que el código es tan hermoso.

Utiliza varios. Este patrón de diseño es realmente sorprendente.

Oh, estoy intoxicado otra vez...)

Volviendo al tema, hablaré de ello. Primero, los conceptos básicos del lenguaje Java.

¿Qué pasa cuando dominamos Java?

El verdadero desarrollo de Java comienza ahora:

En este momento debemos entrar en contacto con otra cosa,

Sí, ¡esa es la base de datos!

No necesito enfatizar la importancia de la base de datos aquí, ¿verdad?

No importa qué tecnología aprendas, una base de datos es imprescindible.

Como programadores de Java, no somos administradores de bases de datos y no necesitamos dominar demasiados conocimientos de gestión de bases de datos.

Solo necesitamos saber cómo conectarnos a la base de datos para acceder y realizar operaciones CRUD, y mejorar la eficiencia en algunos lugares.

Simplemente cree un índice y utilice los procedimientos almacenados de forma adecuada.

En primer lugar, ¿qué tipo de base de datos deberíamos aprender?

De ninguna manera, aprendamos más sobre esto... Después de todo, cada empresa lo usa de manera diferente...

Debes conocer las cuatro bases de datos principales actuales:

p>

DB2 (IBM es conocida como la base de datos más utilizada en el mundo, pero MySQL la ha erosionado lentamente en los últimos años. Sin embargo, muchas grandes empresas la están utilizando, después de todo, es IBM .)

SQLServer (Alcanzó un gran éxito con SQLServer2000. Es muy popular porque es muy compatible con los productos de Microsoft.)

MySQL (Realmente liviano... y de gama baja Base de datos de código abierto convencional, el uso ha superado a DB2)

Oracle ("Oracle", "Oracle", "Sage", "Philosopher"... Basta con mirar la traducción de la palabra Oracle. Muestra cómo poderoso es, pero el tamaño es un poco exagerado...)

Está bien, si ya puedes usar simplemente la base de datos anterior, continúa:

Ya que quieres. para acceder a la base de datos, ¡no puede prescindir de JDBC!

Creo que todo el mundo conoce JDBC. Es solo un conjunto de interfaces, que luego son implementadas por diferentes fabricantes de bases de datos.

Utilice. De esta manera, los métodos para que JDBC acceda a la base de datos son en realidad los mismos, por lo que no entraré en detalles aquí.

Además, JDBC es la implementación subyacente de ORM en el futuro. Una vez que lo aprenda, tendrá una comprensión más clara de los principios de la implementación del marco ORM.

Lo siguiente se centra en las sentencias SQL.

SQL tiene dos conjuntos de estándares (82 y 99), no estoy seguro... No lo recuerdo claramente...

Hoy en día las bases de datos básicamente soportan ambos. .

Pero aquí viene el problema. Diferentes bases de datos lo han cambiado un poco...

Esta es la más problemática...

Además, eso es Por ejemplo, entre los cuatro tipos de bases de datos, hay que recordar las diferencias entre los cuatro tipos de SQL. Aunque en general son similares, aún es necesario distinguirlos.

Y diferentes bases de datos tienen diferentes optimizaciones para declaraciones SQL.

Es decir, la eficiencia de ejecutar la misma declaración SQL en diferentes bases de datos es diferente.

Así que las declaraciones SQL también son un curso obligatorio...

Y no parezca simple, de hecho es muy difícil escribir una declaración SQL eficiente...

Especialmente en consultas conjuntas complejas de varias tablas, se debe considerar este problema de eficiencia.

Además, lo más molesto es la programación de bases de datos.

Cada base de datos tiene su propia sintaxis. Como T-SQL en SQLServer, PLSQL en Oracle, etc...

Usar estos lenguajes para escribir activadores, procedimientos almacenados, etc... Siento que es lo más problemático. .. y no lo uso mucho...

Solo entiéndelo...

Está bien, después de aprender la base de datos, podemos aprender desarrollo web.

El llamado desarrollo web es un desarrollo basado en navegador/servidor (B/S).

Entonces, dado que es un programa que se ejecuta en el navegador, no puede prescindir de tecnologías web como HTML, CSS, JavaScript y DOM.

Entonces, el siguiente paso es aprender HTML. HTML debería ser el lenguaje de marcado más simple y fácil de aprender.

Según los estándares web2.0, XHTML será la norma.

El llamado XHTML es en realidad similar a las especificaciones de HTML4.0, pero los requisitos de las etiquetas son más estrictos.

Mientras aprendes HTML, también necesitas aprender CSS al mismo tiempo. Esto es fácil de decir y difícil de decir. Tu decides.

Pero al fin y al cabo, no somos artistas, siempre y cuando lo entendamos. (A veces paso mucho tiempo en la interfaz...deprimido...)

Mi sugerencia personal es dedicar un poco de tiempo a estudiar JavaScript...

Después de todo, tú Necesitaré usarlo más adelante cuando se trate de Ajax y experiencia de usuario...

Es un lenguaje de scripting del lado del cliente, es decir, lo interpreta y ejecuta el navegador.

Es un lenguaje débilmente tipado, pero aún es muy profundo de estudiar...

En cuanto a DOM, no he dedicado tiempo a estudiarlo, así que no me atrevo a sacar conclusiones. fácilmente.

Después de completar la tecnología web básica, podemos ir al grano. La aplicación de Java en Internet comienza aquí:

Después de aprender la tecnología web previamente, podemos hacer. Sitio web estático sencillo. (Es decir: no hay interacción con la base de datos).

Los sitios web estáticos terminan con el sufijo .html o .htm.

Pero los sitios web estáticos son inútiles, por lo que tenemos que desarrollar sitios web dinámicos.

La tecnología más antigua es CGI (Common Gateway Interface).

Activa el proceso de respuesta según la solicitud http en el lado del navegador, y cada solicitud corresponde a un proceso. (¡Tenga en cuenta que no es un hilo, sino un proceso!)

Cuando hay muchas solicitudes al mismo tiempo, el programa ocupa recursos del sistema, lo que provoca una baja eficiencia.

Las tecnologías de páginas web dinámicas actualmente populares incluyen: ASP, JSP, PHP, ASP.NET, etc.

No las presentaré una por una aquí. Hay muchas comparaciones entre ellos en Internet.

¡Y el protagonista de hoy es JSP!

¿Qué es JSP? Para decirlo sin rodeos, se trata de incrustar código Java ejecutable del lado del servidor en HTML.

El código Java aquí es el mismo que el código Java mencionado anteriormente.

Lo que se debe tener en cuenta aquí es que jsp eventualmente se convertirá en servlet.

Entonces, para aprender bien Jsp, primero debes aprender servlet.

Correspondiente a applet, el servlet es un script del lado del servidor como su nombre lo indica.

Este es el foco del aprendizaje.

No hay nada más que decir.

Aquí hay varios conceptos que dominar: contenedor de servlet, IDE, taglib, DAO, MVC, etc...

El contenedor de servlet es el lugar donde se interpreta y se procesa el código del servlet. ejecutado.

IDE, no lo he mencionado antes, eso es porque el aprendizaje previo es muy sencillo y no requiere el soporte de IDE.

El próximo desarrollo será más complicado, el aumento en la cantidad de archivos y la administración será problemático y será imposible memorizar muchas API.

Así que aquí es el momento de usar un IDE... En cuanto a qué IDE uso, no creo que importe...

(Yo uso el Eclipse más común , por supuesto, también puedes usarlo NetBeans versión 6.0 o superior. Creo que también es muy bueno)

taglib se usa menos aquí y se usará más en marcos de aprendizaje en el futuro.

DAO es muy importante. Su implementación es diversa y vale la pena estudiarla.

MVC es muy importante. Pero lo importante es entender y entender por qué se utiliza MVC.

Finalmente, en cuanto al protocolo Http, la implementación del grupo de subprocesos en el contenedor de Servlet, etc...

Si tienes capacidad y tiempo, echa un vistazo. . No hay nada malo en ello... .

Después de aprender esto, ¡puedes usar otra tecnología, XML!

Como programador de Java, creo que es suficiente entender el. Principios de XML.

Es imposible para ti escribir esquemas o DTD...

Así que sólo necesitamos aprender a leer y escribir XML... (JDOM o DOM4J)

Hablemos brevemente de ajax...

Cuando tu programa requiere que leas datos y los muestres sin actualizar la página, aquí es donde entra en juego ajax.

p>

Si no has aprendido muy bien JavaScript antes, no importa, simplemente usa un marco.

El llamado framework ajax es una biblioteca javascript. Simplifica y encapsula javascript.

Hay muchas bibliotecas ajax comunes y puedes elegir aprenderlas según la situación.

(dojo, prototipo, jquery, dwr, ext, etc...)

Cuando hayas aprendido esto, ya podrás desarrollar un sitio web sencillo de forma independiente.

Sin embargo, aquí hay muchos problemas:

1. Gran cantidad de código

2. Tiempo de desarrollo prolongado

3. expansión Mal rendimiento

4. Aunque se utiliza MVC para capas, el método de desarrollo de JSP+Servlet+JDBC es difícil de mantener. (Especialmente cuando hay mucho código en JSP, como ASP)

5. No OO en teoría

6. Baja eficiencia

7.

Espera...

Puedo pensar en tantas deficiencias en tan poco tiempo, lo que demuestra que todavía existe una gran brecha entre esto y el desarrollo a nivel empresarial.

p>

Entonces, ¿qué son las aplicaciones reales a nivel empresarial?

La esencia de JavaEE es el desarrollo a nivel empresarial...

Desafortunadamente, todavía no hemos entendido la idea central de JavaEE...

Pero desde una perspectiva técnica, ¿qué tecnologías tiene JavaEE?

Parece que hay demasiados... EJB es la idea central de JavaEE... se siente un poco similar al marco .Net... es decir: un marco contiene todas las funciones .

Es una pena que siempre haya sido así. No tengo tiempo para aprender EJB...

Entonces, de lo que quiero hablar a continuación es de cómo mejorar las deficiencias anteriores.

1. Una gran cantidad de código provocará una "extensión del ciclo de desarrollo". Y el código que escribes a veces tiene lagunas o problemas de eficiencia. (Si no es un experto)

Entonces, para resolver este problema, necesita introducir un "marco".

Si se introduce un marco, algunos problemas se pueden resolver fácilmente. .

1. Reducción del tamaño del código.

2. Acortamiento del ciclo de desarrollo.

3. Mejorar la eficiencia.

4. Se ha mejorado un poco la seguridad.

Después de todo, son excelentes profesionales y el código que escriben definitivamente será más sólido y eficiente que el que escriben ellos mismos. ¿Está bien? Y puede reducir la cantidad de código.

Hay muchos tipos de frameworks, al igual que el framework ajax anterior, también es un tipo de framework.

Aquí hay algunos frameworks populares:

Marco MVC: Struts1.x, Struts2.x, JSF, webwork, etc... Entre ellos, el que más espero es struts2

Marco ORM: Hibernate3, Ibatis, jpa, etc... Entre ellos, el que más espero es JPA.

Marco AOP: Spring2.5. parece ser el único popular ahora...AspectJ Nadie lo mencionó...

En cuanto a EJB, no sé mucho al respecto...

Pero en Al menos los anteriores son convencionales. Si encuentra no convencionales... no importa, tengo mala suerte... Aprendamos más...

En cuanto a la mala escalabilidad y mantenibilidad del sistema. , es un problema de diseño de la arquitectura del sistema.

Este problema no es algo que pueda resolver en unas pocas oraciones aquí.

(Trabajé en un patrón DAO genérico hace unos días y lo he estado estudiando durante mucho tiempo)

UML y los patrones de diseño requieren experiencia...

En Habrá muchas cosas inesperadas sucediendo en el proceso de aprendizaje de estos marcos...

El próximo estudio en profundidad es el servicio web y distribuido...

Siento que Aún no he tocado ese nivel...

Aún está lejos...pero tómate tu tiempo...

He dicho tanto hoy porque quiero hacerlo. ¿Sabes lo que significa ser ingeniero de software Java? ¿Qué tecnologías se necesitan?

Realmente necesito reflexionar sobre mí...

Tal vez lo que dije hoy es solo superficial, y hay muchas cosas que no he considerado... Espero amigos. lo señalaré...

También puedes darme tus opiniones...

Tal vez mi visión del tema sea incompleta o parcial, por favor indícalo.