El camino de desarrollo del ingeniero de software Java
Primero, convertirse en gerentes, como gerentes de desarrollo de productos, gerentes técnicos, gerentes de proyectos, etc.
El segundo es continuar su trabajo técnico y convertirse en ingeniero de software senior e ingeniero de requisitos. El lenguaje Java está orientado a objetos. El lenguaje Java proporciona primitivos como clases, interfaces y herencia. En aras de la simplicidad, solo se admite la herencia única entre clases, la herencia múltiple entre interfaces y el mecanismo de implementación entre clases e interfaces (la palabra clave es implements). El lenguaje Java es totalmente compatible con el enlace dinámico, mientras que el lenguaje C++ solo utiliza el enlace dinámico para funciones virtuales. En resumen, el lenguaje Java es un lenguaje de programación puramente orientado a objetos.
Se distribuye el lenguaje Java. El lenguaje Java soporta el desarrollo de aplicaciones de Internet. Entre las interfaces básicas de programación de aplicaciones Java, existe una interfaz de programación de aplicaciones de red (java net), que proporciona una biblioteca de clases para la programación de aplicaciones de red, que incluye URL, URLConnection, Socket, ServerSocket, etc. El mecanismo RMI (activación de método remoto) de Java también es un medio importante para desarrollar aplicaciones distribuidas.
El lenguaje Java es robusto. El sólido mecanismo de escritura de Java, el manejo de excepciones y la recolección automática de basura 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 seguro. Java se usa comúnmente en entornos de red. Para ello, Java proporciona un mecanismo de seguridad para evitar ataques de códigos maliciosos. Además de las muchas características de seguridad del lenguaje Java, Java tiene un mecanismo de protección de seguridad (ClassLoader) para las clases descargadas a través de la red, como asignar diferentes espacios de nombres para evitar que las clases locales sean reemplazadas con los mismos nombres, verificar códigos de bytes y proporcionar Aplicaciones Java con un mecanismo de gestión de seguridad (Class SecurityManager) para configurar la protección de seguridad.
El lenguaje Java es neutral en cuanto a arquitectura. Los programas Java (archivos con el sufijo Java) se compilan en la plataforma Java en un formato de código de bytes independiente de la arquitectura (archivos con el sufijo de clase), que luego se puede ejecutar en cualquier sistema que implemente esta plataforma Java. Este enfoque es adecuado para entornos de red heterogéneos y distribución de software.
El lenguaje Java es portátil. Esta portabilidad proviene de la neutralidad arquitectónica. Además, Java también regula estrictamente la longitud de cada tipo de datos básico. El sistema Java en sí tiene una gran portabilidad. El compilador de Java está implementado en Java y el entorno de ejecución de Java está implementado en ANSI C.
Se compila e interpreta el lenguaje Java. Como se mencionó anteriormente, los programas Java se compilan en formato de código de bytes en la plataforma Java y luego se pueden ejecutar en cualquier sistema que implemente esta plataforma Java. En tiempo de ejecución, el intérprete de Java en la plataforma Java interpreta y ejecuta estos códigos de bytes, y las clases requeridas durante la ejecución se cargan en el entorno de ejecución durante la fase de unión.
Java es alto rendimiento. En comparación con los lenguajes de secuencias de comandos interpretados de alto nivel, Java es realmente de alto rendimiento. De hecho, con el desarrollo de la tecnología de compilación JIT (Just-In-Time), la velocidad de ejecución de Java se ha vuelto comparable a la del código nativo optimizado.
El lenguaje Java es multiproceso. En el lenguaje Java, un hilo es un objeto especial que debe ser creado por la clase Thread o sus subclases. Por lo general, hay dos formas de crear un hilo: una es usar el constructor del tipo Thread (Runnable) para envolver un objeto con la interfaz Runnable en un hilo y la otra es derivar una subclase de la clase de hilo y anular la ejecución; método y uso El objeto creado por esta subclase es un hilo. Vale la pena señalar que la clase Thread implementa la interfaz Runnable, por lo que cualquier hilo tiene su método de ejecución, que contiene el código que el hilo desea ejecutar. La actividad de un hilo está controlada por un conjunto de métodos. El lenguaje Java admite la ejecución simultánea de múltiples subprocesos y proporciona un mecanismo de sincronización entre múltiples subprocesos (la palabra clave está sincronizada).
El lenguaje Java es dinámico.
Uno de los objetivos de diseño del lenguaje Java es adaptarse a entornos dinámicos. Las clases requeridas por los programas Java se pueden cargar dinámicamente en el entorno de ejecución o a través de la red. Esto también facilita las actualizaciones de software. Además, las clases en Java tienen una representación en tiempo de ejecución y el tipo se puede verificar en tiempo de ejecución. Las excelentes características del lenguaje Java hacen que las aplicaciones Java sean extremadamente robustas y confiables, lo que también reduce el costo de mantenimiento del sistema de aplicaciones. El soporte integral de Java para la tecnología de objetos y la API integrada en la plataforma Java puede acortar el tiempo de desarrollo de los sistemas de aplicaciones y reducir los costos. Java se puede compilar una vez y ejecutar en cualquier lugar, lo que le permite proporcionar una estructura abierta que se puede utilizar en cualquier lugar y una forma económica de transferir información entre múltiples plataformas. En particular, Java Enterprise API proporciona tecnologías relevantes y bibliotecas ricas para sistemas de aplicaciones de comercio electrónico y computación empresarial.
La diferencia entre Java y C/C++ Los lectores que estén familiarizados con el lenguaje C y el lenguaje C++ deben querer comprender este problema. De hecho, Java hereda muchos elementos del lenguaje C y del lenguaje C++, e incluso puede considerarse como un producto del desarrollo y derivados de lenguajes similares a C. Por ejemplo, la declaración de variables, la forma del operador, la transferencia de parámetros y el control de procesos del lenguaje Java son exactamente los mismos que los del lenguaje C y C ++. A pesar de esto, Java todavía tiene muchas diferencias con el lenguaje C y el lenguaje C++, principalmente en los siguientes aspectos:
(1) La asignación de memoria en Java es dinámica. Adopta un mecanismo orientado a objetos y utiliza el operador nuevo para asignar espacio de memoria para cada objeto. Y la memoria real cambiará a medida que se ejecute el programa. Cuando el programa se está ejecutando, el sistema Java escaneará automáticamente la memoria y recolectará el espacio que no se ha utilizado durante mucho tiempo como "basura" para aprovechar al máximo los recursos del sistema. Según este mecanismo, los programadores no necesitan prestar atención a los problemas de administración de la memoria, lo que hace que la escritura de programas Java sea simple y clara y evita problemas del sistema causados por errores en la administración de la memoria. En lenguaje C, la memoria es asignada y liberada por las funciones de biblioteca malloc() y free(), mientras que en lenguaje C++, la memoria es asignada y liberada por los operadores new y delete. En la mecánica de C y C++, los programadores deben manejar el uso de la memoria con mucho cuidado. Por un lado, si la memoria liberada se libera nuevamente o se libera la memoria no asignada, provocará un bloqueo; por otro lado, si la memoria que no se ha utilizado durante mucho tiempo o que ya no se utiliza no se libera; desperdiciará recursos del sistema e incluso provocará el agotamiento de los recursos.
(2) Java no define variables globales fuera de todas las clases, pero define una variable estática pública en una clase para completar la función de una variable global. (3) Java no usa declaraciones goto, pero usa declaraciones de manejo de excepciones try-catch-finally en lugar de declaraciones goto para manejar errores. (4) Java no admite archivos de encabezado, pero tanto el lenguaje C como el C ++ usan archivos de encabezado para definir prototipos de clases, variables globales, funciones de biblioteca, etc. Esta estructura de archivos de encabezado hace que la operación y el mantenimiento del sistema sean bastante complejos.
(5) Java no admite definiciones de macros, pero usa la palabra clave final para definir constantes. En C++, las definiciones de macros se usan para definir constantes, lo que no favorece la legibilidad del programa.
(6) Java asigna una longitud fija a cada tipo de datos. Por ejemplo, en Java, el tipo de int es siempre de 32 bits, pero en C y C++, al mismo tipo de datos se le asignan diferentes bytes para diferentes plataformas. Este también es el tipo de int, que en PC es de dos bytes. 16 bits, en comparación con los 32 bits del VAX-11. Esto hace que el lenguaje C no sea portátil.
(7) Diferentes tipos de conversiones. En C y C++, las conversiones de tipos arbitrarias se pueden realizar mediante punteros, lo que a menudo resulta en condiciones inseguras. En Java, el sistema de ejecución debe verificar la compatibilidad de tipos de los objetos para evitar conversiones inseguras.
(8) Estructura y elaboración conjunta. En C y C++, todos los miembros de estructuras y sindicatos son públicos, lo que crea problemas de seguridad. Sin embargo, en Java no hay ninguna estructura ni unión, todo está encapsulado en clases.
(9) Java ya no utiliza punteros. Los punteros son los tipos de datos más flexibles y propensos a errores en C y C++. Las operaciones de puntero en direcciones de memoria a menudo conducen a errores impredecibles. Al mismo tiempo, después de una conversión de tipo explícita de una dirección de memoria, se puede acceder a un miembro privado en C++, destruyendo así la seguridad.
Pero Java tiene control total sobre los punteros y los programadores no pueden realizar ninguna operación con punteros directamente.
(10) Evitar la dependencia de la plataforma. Las bibliotecas de clases escritas en lenguaje Java se pueden utilizar en aplicaciones Java en otras plataformas, a diferencia del lenguaje C++ que debe depender de la plataforma Windows.
(11) Java es muy superior a C++ en el desarrollo B/S. Desde que Oracle adquirió Sun, las perspectivas de desarrollo de Java se han vuelto confusas y muchos desarrolladores de programas están confundidos. El 9 de abril de 2010, James Gosling, conocido como el padre de Java, anunció su renuncia a Oracle en su blog personal, lo que arrojó una capa de confusión sobre el futuro de Java. Pero tras entrar en mayo, todo empezó a aclararse. En primer lugar, en términos de soporte posterior para Java, Oracle anunció una serie de planes relacionados con Java. Más tarde, James Gosling, el padre de Java, elogió la contribución de Oracle a Java después de declarar que Java no moriría. En el sitio web de publicación de eventos de Oracle, se han publicado continuamente una serie de actividades promocionales sobre Java.
Introducción a la versión
El 12 de mayo de 2010, Dave Hofert, principal gerente de producto de Oracle, hablará sobre las mejoras e innovaciones en las aplicaciones comerciales JavaSE. Según los materiales promocionales, en este discurso, Dave Hofert mencionará los siguientes temas:
Las diferencias en el soporte de plataforma entre la versión comercial y la versión comunitaria.
¿Cómo obtener ayuda de expertos para ayudar a las empresas a mejorar las aplicaciones Java?
Para problemas de parches de seguridad de versiones anteriores.
Herramientas de publicación y actualizaciones disponibles.
Los días 10, 19, 20 y 27 de junio de 2018, los expertos de Oracle y Sun se reunirán con usuarios en Helsinki, Stuttgart, Budapest y Londres respectivamente, y discutirán el camino de desarrollo de Java con los usuarios en el reunión . Los temas clave discutidos incluyen cómo Oracle continuará invirtiendo y mejorando la tecnología Java. Los usuarios también serán informados sobre las últimas noticias sobre JavaSE, el equipo de expertos de JavaME, JavaFX y JDK7, así como información sobre Oracle Berkeley DB.
El 3 de mayo de 2010, James Gosling, el padre de Java, que dejó Oracle durante casi un mes, expresó su preocupación por el lanzamiento de NetBeans 6.9 y FX1.3 en su blog. El lanzamiento de las últimas versiones de estos dos proyectos puede demostrar que Oracle ha comenzado a cumplir sus promesas originales. En su primer blog, James Gosling también reveló que no abandonaría su carrera en Java, sino que sólo necesitaba resolver algunos problemas legales con Oracle.
Estas señales indican que Oracle nunca renunciará fácilmente a la gran porción del pastel de Java, y Oracle ha aprendido gradualmente a respetar a la comunidad de código abierto. En primer lugar, en términos de la versión comercial de JDK, Oracle continuará profundizando en los intereses comerciales de Java e integrándolo aún más con sus productos inherentes. En términos de la versión comunitaria, Oracle discutirá y desarrollará la tecnología Java con los desarrolladores de Java. Un producto que necesita mención especial aquí es OracleBerkeleyDB, que es un producto de base de datos no relacional de código abierto respaldado por Oracle. Hoy en día, cuando NOSQL es popular, si Oracle puede integrar profundamente BerkeleyDB con Java, traerá más vitalidad y vitalidad a Java. A juzgar por la actuación de James Gosling, parece que se ha llegado a cierto acuerdo con Oracle y existe la posibilidad de una mayor cooperación.
Desarrollo de Java
En el siempre cambiante campo de la tecnología de TI, Java ya no es joven. En los últimos diez años, Java se ha basado en sus características abiertas y multiplataforma y en el vigoroso desarrollo de Internet para cambiar la situación en la que C/C++ domina el mundo, formando un patrón tripartito de Java, C y C++. En particular, Java ha dominado las clasificaciones de lenguajes de programación durante 10 años, ayudando a Sun a establecer su posición en los campos de tecnología de TI y código abierto. Todos estos ilustran la importancia de Java en el campo del desarrollo.
En la dirección del desarrollo futuro, Java tiene perspectivas muy amplias en la Web, los dispositivos móviles y la computación en la nube. A pesar de los desafíos de las plataformas de programación como Ruby on Rails en la Web, Java sigue siendo el estándar de facto para el desarrollo web empresarial.
En términos del atractivo de Java para los nuevos desarrolladores, a lo largo de los años, Java se ha enfrentado a desafíos derivados de la inmadurez de los lenguajes de programación basados en scripts. Por ejemplo, PHP y Ruby no han sido vistos como más competitivos que Java a pesar de sus esfuerzos durante muchos años. Por otro lado, con la expansión de la computación en la nube y los campos móviles, cada vez más empresas están comenzando a considerar implementar sus aplicaciones en la plataforma Java. Ya sea un host local, una nube pública o Java, es la opción más adecuada en la actualidad.
De hecho, la apertura, la seguridad y los enormes recursos sociales de la tecnología Java, así como sus características multiplataforma, es decir, "escribir una vez, ejecutar en cualquier lugar", también han hecho de la tecnología Java una realidad para plataformas de software para teléfonos inteligentes en los estándares. Después de adoptar la tecnología Java, las personas que escriben aplicaciones y brindan servicios no necesitan preocuparse por el sistema operativo y el chip que utilizan los teléfonos móviles que reciben sus servicios, siempre y cuando escriban programas de acuerdo con los requisitos de Java, de manera similar, los fabricantes de teléfonos móviles; No necesita preocuparse por quién los utilizará en el futuro para brindar servicios de valor agregado. Al mismo tiempo, con el apoyo de la inversión en tecnología de Oracle, Java también será la mejor opción para que las empresas eviten las plataformas de Microsoft en aplicaciones en la nube y Apple en aplicaciones móviles. Por ejemplo, VMware anunció un servicio llamado VMforce que implementará aplicaciones Java en computadoras en la nube, y Google App Engine seguirá admitiendo Java. Todos ellos son competidores basados en la plataforma en la nube Azure proporcionada por Microsoft. Net y el lenguaje PHP de código abierto. Además, ingresar a las aplicaciones de escritorio tradicionales sigue siendo uno de los esfuerzos futuros de Java.
Como lenguaje principal para aplicaciones comerciales, JAVA ha adquirido nueva vitalidad en la era del 3G y el Internet de las cosas.
En la era de Internet, el lenguaje JAVA siempre ha sido el lenguaje del lado del servidor más utilizado. Con la llegada de la era 3G e Internet, el lenguaje JAVA no quedará "obsoleto". Por el contrario, el lenguaje JAVA tendrá perspectivas de desarrollo más brillantes en nuevos campos comerciales.
El desarrollo de 3G e Internet no solo ha impulsado el desarrollo de industrias de hardware o software de sistemas, como la fabricación de teléfonos inteligentes, las operaciones de telecomunicaciones, la industria RFID y los dispositivos integrados. Más importante aún, 3G e Internet han creado más aplicaciones nuevas en el campo empresarial, ¡y el lenguaje de programación central en estos campos sigue siendo JAVA!
En el sistema de cursos TTS4.0, el proyecto "Airline Mobile Service Portal" basado en la plataforma de teléfonos inteligentes y el proyecto "New Generation Logistics" basado en posicionamiento global, seguimiento de pedidos en tiempo real, gestión de almacenamiento RFID y muchas otras nuevas tecnologías de Internet. El proyecto "Sistema de gestión" es un representante típico de estas nuevas áreas de aplicación empresarial.
Tendencias futuras
Para Java, 2010 es un año extraordinario. Desde que Oracle completó la adquisición de Sun a principios de año, todo el mundo ha estado lleno de preocupaciones sobre el futuro de Java. Se puede decir que la conferencia JavaOne celebrada en Beijing en junio de 2002 es la primera conferencia oficial después de que Oracle adquiriera Sun. Puede obtener más información sobre el desarrollo futuro de Java en JavaOne. 2011 será un nuevo comienzo para Java.
Java ha pasado sus 15 años en el campo de la tecnología de TI en constante cambio, ya no es joven, pero nunca ha detenido el ritmo del cambio y la innovación. Java es más que un lenguaje informático. Muchas veces lo llamamos plataforma o comunidad. La siguiente es una perspectiva sobre el desarrollo de la tecnología Java en 2011 desde los aspectos de Java SE, Java EE, Java ME, JavaFX, etc.
Java SE
Se puede ver en la estrategia futura de Java anunciada por Oracle que el objetivo de Oracle es fortalecer y continuar expandiendo la aplicación de Java en nuevos campos e incorporar Java. plataforma en nuevas implementaciones, aumentar la inversión en la comunidad Java y permitir que la comunidad participe más. Java SE 7, que preocupa más a los desarrolladores, estará listo en el verano de 2011. Entre ellos, JCP ha aprobado JSR 334, JSR 335, JSR 336 y JSR 337, que admiten mejoras en el lenguaje Java y las especificaciones API, como cambio de cadena, captura múltiple, reinicio exacto en la creación de instancias genéricas y expresiones Lambda (. cierre), etc. Java SE 8 estará listo entre uno y un año y medio después del lanzamiento de SE 7.
VM modular: una máquina virtual se puede dividir en pequeñas partes para uso de aplicaciones y enviar a Internet según sea necesario. Por lo tanto, cuando la VM no está en la máquina de destino, la aplicación Java se inicia en menos tiempo y se descarga en menos tiempo.
Soporte de idiomas adicional: la plataforma Java admite aplicaciones escritas en diferentes idiomas y en el futuro se agregará más soporte de idiomas, incluido el soporte para lenguajes dinámicos. Se trata de la llamada Máquina DaVinci o Máquina Virtual Multilingüe. Consulte JSR-292.
Soporte multinúcleo mejorado: las aplicaciones Java nuevas y existentes necesitan herramientas, bibliotecas y funciones integradas para aprovechar más eficazmente el hardware multinúcleo. El modelo de subprocesos de Java facilita la creación de subprocesos que ejecutan tareas en paralelo, pero ¿cómo se divide una sola tarea en varios fragmentos para su ejecución en paralelo?
Otras mejoras incluyen mejoras continuas de rendimiento, así como una serie de mejoras de lenguaje, incluida la adición de cierres, soporte para cadenas en declaraciones de cambio y captura de excepciones de bloques múltiples. Los cierres son una función controvertida que se implementa mediante el uso de clases internas anónimas de Java.
Java EE
Oracle ha apoyado durante mucho tiempo Java y es uno de los miembros más importantes de JCP. Comenzó a participar en la redacción de las especificaciones de Java EE hace más de 10 años, por lo que no debería sorprender que Oracle se haya convertido en un actor importante en el mercado de middleware de Java.
Java EE Outlook
Modularización, estándares de desarrollo: Java EE 6 implementa Java EE modular a través de la definición de Profile, lo que permite a los fabricantes crear pilas de Java EE más pequeñas según las necesidades específicas. resolviendo el costo y la complejidad del uso de Java EE. A través de un diseño modular y estándares definidos, ayuda a simplificar Java EE y hacerlo más utilizado.
Java EE 6 especifica dos archivos de configuración: archivos de configuración web (Servlet, JSP y JSF) y archivos de configuración empresarial Java EE. Obviamente, se pueden definir más tipos de perfiles, por ejemplo, se define un perfil de servidor de telecomunicaciones para soportar el Protocolo de inicio de sesión (SIP).
UI y RIA: HTML sigue siendo el protocolo UI implícito para aplicaciones Java EE, generalmente generado por Java Servlets, JSP y JSF. Teniendo en cuenta que las páginas web producidas son estáticas, se puede utilizar la tecnología Ajax, pero esto está fuera del alcance de Java EE.
Aunque Oracle no tiene planes específicos al respecto, cuando Java EE y JavaFX se integren en el futuro, el problema de Ajax quedará resuelto.
Java me
Java es el entorno móvil preferido de Oracle. En el futuro, el método de presentación predeterminado de esta pila será HTML, CSS y Javascript. Java ME incluirá el motor WebKit y JavaScript. Motor y Java/JavaScript. Puente. En otras palabras, los futuros teléfonos móviles que ejecuten la nueva versión de Java ME podrán acceder a servicios web fuera del navegador sin problemas de rendimiento. Estos motores se conectarán directamente a la máquina virtual Java ME y Java FX.
El motor Java ME de Oracle aprovechará la representación 2D y 3D (60 fotogramas/segundo) en la que destacan los aceleradores de hardware de gráficos contemporáneos (en un entorno Windows, Direct X de Microsoft, OpenGL o futuras tecnologías "mejores"). ). Java ME estará optimizado para los conjuntos de chips ARM7 y ARM9, incluidos Broadcom, Samsung, NEC, Texas Instruments y otros fabricantes autorizados de componentes de teléfonos móviles, y también tendrá API integradas para utilizar plenamente las funciones de pago, llamadas y ubicación de los dispositivos móviles.
JavaFX
Con la integración de JavaFX y Java y ejecutándose en JVM, su procesamiento de medios enriquecidos y funciones de renderizado bidimensional y tridimensional también estarán disponibles para cualquier otro software. se ejecuta en los lenguajes de programación JVM, lo que significa que Groovy, Scala y JRuby también se pueden utilizar para integrar la funcionalidad JavaFX.
Perspectiva de JavaFX:
Cree ejemplos de diseño basados en componentes visuales
Cree una rica biblioteca de extensiones de interfaz de usuario para aplicaciones JavaFX.
Mejora del rendimiento de JavaFX en todas las plataformas.
Mejore la capacidad de portar aplicaciones JavaFX entre dispositivos.
Integración perfecta con Java, JavaScript y HTML 5.
Admite dispositivos emergentes y paradigmas de interfaz de usuario (por ejemplo, multitáctil)