La Red de Conocimientos Pedagógicos - Conocimientos históricos - Por qué Java se está volviendo cada vez más popular

Por qué Java se está volviendo cada vez más popular

Java es el nombre general del lenguaje de programación orientado a objetos Java y plataforma Java lanzado por Sun Microsystems en mayo de 1995. Fue desarrollado conjuntamente por James Gosling y sus colegas y lanzado oficialmente en 1995.

Java se divide en tres sistemas:

JavaSE (J2SE) (Java2 Platform Standard Edition, edición estándar de la plataforma java)

JavaEE (J2EE) (Java 2 Platform, Enterprise Edition, plataforma java Enterprise Edition)

JavaME (J2ME) (Java 2 Platform Micro Edition, plataforma java micro edition).

En junio de 2005, se celebró la conferencia JavaOne y SUN lanzó Java SE 6. En ese momento, se había cambiado el nombre de varias versiones de Java para eliminar el número "2": J2EE pasó a llamarse Java EE, J2SE pasó a llamarse Java SE y J2ME pasó a llamarse Java ME.

Características principales

El lenguaje Java es simple:

La sintaxis del lenguaje Java es muy similar a la del lenguaje C y al lenguaje C++, lo que facilita la mayoría de los programadores deben aprender y utilizar. Por otro lado, Java descarta aquellas características de C++ que rara vez se utilizan, son difíciles de entender y confusas, como la sobrecarga de operadores, la herencia múltiple y las conversiones automáticas. En particular, el lenguaje Java no utiliza punteros, sino referencias. También proporciona recolección automática de residuos para que los programadores no tengan que preocuparse por la administración de la memoria. Si quieres aprender Java, puedes venir a este grupo. El primero es 220, el del medio es 142 y el último es 906. Hay muchos materiales de aprendizaje que se pueden descargar.

El lenguaje Java está orientado a objetos:

El lenguaje Java proporciona primitivos como clases, interfaces y herencia. Para simplificar, solo admite herencia única entre clases, pero admite interfaces. Herencia múltiple entre clases y admite 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.

El lenguaje Java se distribuye:

El lenguaje Java admite 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 Proporciona bibliotecas de clases para la programación de aplicaciones de red, incluidas 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, la recolección automática de basura, etc. son garantías importantes para la solidez de los programas Java. Descartar punteros es una opción inteligente 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 utiliza habitualmente en entornos de red. Por este motivo, 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 prevención de seguridad (clase ClassLoader) para las clases descargadas a través de la red, como la asignación de diferentes espacios de nombres para evitar el reemplazo de clases locales con el mismo nombre, inspección de código de bytes, y proporcionar un mecanismo de gestión de seguridad (clase SecurityManager) permite que las aplicaciones Java configuren centinelas de seguridad.

El lenguaje Java es de arquitectura neutral:

Los programas Java (archivos con el sufijo java) se compilan en un formato de código de bytes de arquitectura neutral (con el sufijo clase) en el archivo de la plataforma Java. ), 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 de la arquitectura. Además, Java también estipula estrictamente la longitud de cada tipo de datos básico. El sistema Java en sí también es muy portátil. El compilador de Java está implementado en Java y el entorno de ejecución de Java está implementado en ANSI C.

Se 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 usar en cualquier sistema que implemente esta plataforma Java. en funcionamiento. 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 conexión.

Java es de alto rendimiento:

En comparación con los lenguajes de secuencias de comandos interpretados de alto nivel, Java es de hecho 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 acerca cada vez más a la de C++.

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 descendientes (nietos). Generalmente hay dos formas de crear un hilo: primero, usar el constructor de tipo Thread(Runnable) para envolver un objeto que implementa la interfaz Runnable en un hilo; segundo, derivar una subclase de la clase Thread y anular el método run, el objeto; creado usando esta subclase es un hilo. Vale la pena señalar que la clase Thread ha implementado la interfaz Runnable, por lo que cualquier hilo tiene su método de ejecución, y el método de ejecución contiene el código que ejecutará el hilo. 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 que cambian dinámicamente. Las clases requeridas por los programas Java se pueden cargar dinámicamente en el entorno de ejecución o las clases requeridas se pueden cargar 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 pueden realizar comprobaciones de tipos en tiempo de ejecución.

Y Android, tal como lo conocemos, ha impulsado el desarrollo del lenguaje Java

Entonces, hablemos de ¿por qué el desarrollo de Android utiliza Java?

La siguiente es la respuesta de un internauta de Zhihu:

En primer lugar, debemos elegir un idioma para desarrollar la aplicación local.

Entonces, ¿cuál es nuestro primer paso?

Selecciona un idioma entre los idiomas disponibles.

La primera consideración es que los idiomas que no son populares y los idiomas que no tienen futuro no están dentro del ámbito de selección.

---Como nadie lo usa, habrá menos bibliotecas. Porque la biblioteca no será fácil de usar. Porque no es fácil de usar. Por eso lo usa menos gente. La idea central del ecosistema.

--Entonces, ¿existe sólo C++/Java en este mundo? Definitivamente no. Porque algunas lenguas tienen futuro. La característica más importante es. Simplifica la carga de los programadores. O más eficiente. Definitivamente será algo común en el futuro.

Entonces, ¿cuáles son nuestros lenguajes de uso común y lenguajes prometedores?

C/C++/Java/C#/Python/Ruby/Go/JavaScript+Html

bien. Estos son los lenguajes que utilizamos habitualmente. Lo que estamos viendo es cómo eliminar estos idiomas paso a paso. Entonces sólo queda el de Java.

El primero en ser expulsado es C. Hasta ahora, pocos programas de interfaz gráfica a gran escala con más de 100.000 líneas de código utilizan C. Debido al complejo manejo de errores y a la falta de mecanismo de corrección de errores. Haciendo que el programa sea muy propenso a fallar. al mismo tiempo. Porque C no está orientado a objetos. Entonces el desarrollo de la ingeniería parece muy problemático.

Creo que nadie tomará la iniciativa de decirlo ahora. Utilice C para desarrollar programas de interfaz múltiple, como aplicaciones.

El que sigue siendo expulsado es C#. ¿Por qué debería usar uno que nació para trabajar con Java? Sigue siendo el lenguaje propietario de Microsoft. bien. Android es de código abierto. Y C# está destinado a no ser un lenguaje adecuado para el mundo del código abierto.

Entonces sigamos jugando con el lenguaje:

¿Deberíamos tener un lenguaje pesado o un lenguaje ligero?

Java/C++/C#/Go/C son lenguajes pesados.

Python/Ruby/JavaScript+Html/ es un lenguaje ligero.

Sí. En mi opinión, el estándar para dividir idiomas es básicamente este: siempre que se refleje en el código, debemos centrarnos en la eficiencia. Ése es el énfasis en el lenguaje.

Lo primero que destaca el lenguaje es la eficiencia operativa. Entonces preste atención a la ingeniería.

El lenguaje ligero enfatiza la eficiencia del desarrollo y el desarrollo ágil.

Volver a los principios de selección de idioma.

Queremos desarrollar una App local. También en un teléfono con bajas prestaciones.

Así que en lenguajes de desarrollo distintos a C. El más eficiente es C++, seguido de Java.

Entonces los lenguajes ligeros serán eliminados uno por uno.

Ruby ha marcado la diferencia en la web. Pero hay muy pocas bibliotecas. Hay menos bibliotecas de gráficos y todos los desarrolladores son personas del lado web. Que te pateen.

JavaScript+Html - ----> Esta es la tendencia de unificación en el futuro. Pero ahora buscamos un lenguaje para desarrollar aplicaciones locales.

Además, HTML+JavaScript sincero tiene desventajas inherentes. (Eficiencia + Sin conexión)

Python tiene una biblioteca completa. Tiene una comunidad muy popular. También ha habido intentos de desarrollarlo en teléfonos móviles. (Nokia ha hecho esto. El UML de Ubuntu Phone también es un lenguaje similar a Python). Google también es un gran usuario de Python. La eficiencia es el problema. Pero no del todo. Primero reservemos nuestras opiniones sobre la implementación de Python.

Entonces veamos los cuatro lenguajes preseleccionados en esta ronda

Java/C++/Python/Go

Hablemos de Go. El lenguaje Go aún no está maduro. Tampoco hay muchas bibliotecas. Hay pocos desarrolladores. Pero como idioma principal de Google. Muy probable. Google proporcionará el SDK de Android basado en Go. Al menos ahora el idioma principal de Android no será Go.

Quedan tres puertas

C++/Python/Java

Eficiencia de reejecución de C++. Pero la multiplataforma es débil. El desarrollo es más difícil. Cuantas más bibliotecas hay, más gente las utiliza.

Python, centrándose en la eficiencia del desarrollo. Altamente multiplataforma. Es fácil de desarrollar, tiene muchas bibliotecas y lo utiliza mucha gente.

Java. Eficiencia de la reurbanización. No es tan bueno como Python, la eficiencia de repetición no es tan bueno como C ++. La dificultad de desarrollo es baja. Cudo. Mucha gente lo usa.

Volviendo a los requisitos:

Google quiere un lenguaje para desarrollar aplicaciones locales. Google quiere bloquear las diferencias en el hardware subyacente. La implementación es una plataforma unificada para desarrolladores.

Al mismo tiempo. Para la plataforma actual de teléfonos móviles. consumo de energía y rendimiento. es una pregunta inevitable.

Entonces los requisitos multiplataforma de este lenguaje son muy altos. Al mismo tiempo, es muy eficiente.

Hablando de Python: la eficiencia no puede cumplir con los requisitos comunes de los teléfonos móviles. Especialmente para operaciones altamente computacionales como el procesamiento de imágenes. y. La comunidad no se puede comparar con C++/Java. Esto significa que no hay tantas bibliotecas como Java y C++, y los desarrolladores no están al mismo nivel que Java y C++.

Hablando de C++: cualquiera que haya usado JNI sabe que la biblioteca local C/C++ debe compilarse al menos varias veces. Diferentes marcos representan diferentes entornos de compilación. Y si lo compila y ejecuta directamente con C++. C++ no puede proteger muy bien las diferencias de hardware. Por tanto, la depuración es una tarea relativamente difícil para el desarrollo.

C++ no es un muy buen lenguaje de desarrollo de ingeniería.

¿Hay alguna solución? Qt. Se pueden utilizar marcos para proteger la mayoría de las operaciones detalladas. Qt5.0 es compatible con Android.

¿Por qué es inútil? Supongo que es porque Qt no es un producto de Google y no es de código abierto.

Hablando de Java: La máquina virtual es el núcleo. Porque las máquinas virtuales realmente pueden enmascarar muchas diferencias en el desarrollo. Y a través de una máquina virtual. Los desarrolladores solo necesitan traducirlo a código de ejecución al empaquetar y no necesitan traducirlo a código de máquina.

Muchas diferencias se resuelven mediante máquinas virtuales. Y la eficiencia no se pierde gravemente.

Y Java es más popular que C++ tanto entre la comunidad de código abierto como entre la comunidad industrial. Incluso Java tiene problemas de derechos de autor. . .

Enmascaramos las diferencias de hardware más básicas. A través de Linux se blindan algunas diferencias funcionales básicas de los teléfonos móviles. Luego, proporcione un método de prueba y desarrollo puramente amigable para los desarrolladores. Sólo a través de la máquina virtual. Y esta máquina virtual necesita hablar de rendimiento.

Google construyó una máquina virtual Davlik. bien. Este es el núcleo de Android. Es por los requisitos de alto rendimiento. La máquina virtual tuvo que ser rediseñada. Davlik es una máquina virtual muy eficiente. Otras bibliotecas de uso común están disponibles y listas para usar. No es necesario que lo escriba usted mismo. Simplemente empaquételo.

También hay algunas bibliotecas y aplicaciones cuya eficiencia debe probarse. qué hacer.

Usar la tecnología JNI para llamar a C++

Sí, es muy engañoso.

¿Por qué el lenguaje Objective-C ignora la mayoría de los requisitos que mencioné? Porque Apple tiene la capacidad de crear un lenguaje mejor. Para Android, Google simplemente elige un idioma en la comunidad de código abierto.

Y. ObjectC nació en Apple y murió en Apple. compatibilidad. La gente no necesita pensar en eso. Entonces la gente se atreve a usar Objective-C y Android para lograr una verdadera multiplataforma. La única opción es Java.