¿Cuál es la diferencia entre Java y JavaScript?

Ambos idiomas son totalmente diferentes. Aunque tienen un tipo similar de sintaxis y nombre que generalmente confunden a los recién llegados acerca de ambos idiomas.

Java es un lenguaje de programación y una plataforma informática lanzada por primera vez por Sun Microsystems en 1995. Java es un lenguaje de programación de computadora de propósito general que es concurrente, basado en clases, orientado a objetos y diseñado específicamente para tener la menor cantidad posible de dependencias de implementación. Su objetivo es permitir que los desarrolladores de aplicaciones “escriban una vez, se ejecuten en cualquier lugar” (WORA), lo que significa que el código Java compilado puede ejecutarse en todas las plataformas que admiten Java sin la necesidad de volver a compilar. y ahora Java ha evolucionado como una plataforma base para muchas otras tecnologías como Android Development, Enterprise Development, etc. Hay muchas aplicaciones y sitios web que no funcionarán a menos que tenga Java instalado. Java es uno de los lenguajes de programación más populares en uso,

Mientras que el script Java es un lenguaje de script del lado del cliente y se utiliza principalmente como parte de las páginas web para realizar diversas tareas en el lado del cliente solo sin volver al servidor. Javascript es un lenguaje dinámico de programación de computadoras. Es liviano y se usa más comúnmente como parte de las páginas web, cuyas implementaciones permiten que el script del lado del cliente interactúe con el usuario y cree páginas dinámicas. Es un lenguaje de programación interpretado con capacidades orientadas a objetos. El famoso ejemplo del programa Javascript es algunas veces cuando rellena un formulario en el sitio web e intenta ingresar un alfabeto en el cuadro de texto hecho para el número de teléfono; inmediatamente aparece un mensaje emergente con un mensaje que solo puede ingresar numérico. Eso generalmente se hace con la ayuda de JavaScript sin hacer referencia al servidor.

Espero que esto aclare tu duda.

Si quieres aprender programación. Puedes ver mis videos tutoriales en el canal de YouTube

Tutoriales hábiles

Si encuentra útil esta respuesta. Por favor, vota esta respuesta

El lenguaje de programación JavaScript, desarrollado por Netscape, Inc., no forma parte de la plataforma Java.

JavaScript no crea applets o aplicaciones independientes. En su forma más común, JavaScript reside dentro de documentos HTML y puede proporcionar niveles de interactividad a páginas web que no se pueden lograr con HTML simple.

Diferencias clave entre Java y JavaScript:

  • Java es un lenguaje de programación OOP, mientras que Java Script es un lenguaje de programación OOP.
  • Java crea aplicaciones que se ejecutan en una máquina virtual o navegador, mientras que el código JavaScript se ejecuta solo en un navegador.
  • El código Java debe compilarse mientras que el código JavaScript está todo en texto.
  • Requieren diferentes complementos.

Fuente: ¿en qué se diferencia JavaScript de Java?

Algunas diferencias importantes:

  • Compilado vs. Interpretado. Java se considera un lenguaje de programación compilado . JavaScript se considera un lenguaje de script interpretado . La diferencia está en la implementación: Java se compila en bytecode y se ejecuta en una máquina virtual, mientras que JavaScript puede ser interpretado directamente por un navegador en la sintaxis que está escrita (aunque generalmente se minimiza en la práctica).
  • Comprobación de tipo estático vs dinámico. Java utiliza la verificación de tipo estático, donde el tipo de una variable se verifica en tiempo de compilación. El programador debe especificar el tipo (entero, doble, cadena, etc.) de cualquier variable que cree. JavaScript, como la mayoría de los lenguajes de secuencias de comandos, utiliza la escritura dinámica, donde la seguridad de tipos se verifica en tiempo de ejecución. No es necesario que un programador especifique el tipo de cualquier variable que cree. Hay muchos pros y contras para estos dos paradigmas, pero la principal ventaja de la verificación de tipos estáticos es que los errores de tipo se detectan al principio del desarrollo, y debido a que el compilador sabe exactamente qué tipos de datos se están utilizando, el código generalmente se ejecuta más rápido o usa menos memoria . La principal ventaja de la verificación dinámica de tipos es la productividad del programador: puede asignar tipos libremente.
  • Concurrencia. La capacidad de manejar la ejecución de varias secuencias de instrucciones al mismo tiempo se maneja de manera muy diferente entre Java y JavaScript. Java utiliza múltiples hilos para realizar tareas en paralelo. JavaScript, particularmente porque existe como Node.js en aplicaciones del lado del servidor, maneja la concurrencia en un hilo principal de ejecución a través de un sistema de cola llamado bucle de eventos y un sistema de bifurcación llamado Node Clustering. Para la mayoría de los casos de uso, ambos métodos funcionan bien, pero Java es generalmente más rápido porque la memoria de hilo a hilo se comparte mucho más rápido que la comunicación entre procesos (IPC).
  • Basado en clase versus basado en prototipo. Java sigue la herencia basada en clases: una relación jerárquica de arriba hacia abajo basada en clases mediante la cual las propiedades se definen en una clase y se heredan por una instancia de esa clase (uno de sus miembros). En JavaScript, la herencia es prototípica: todos los objetos pueden heredar directamente de otros objetos. La jerarquía se realiza en JavaScript asignando un objeto como prototipo con una función de constructor.

Estos son dos lenguajes de programación diferentes.

Javascript es un lenguaje que ha ganado una gran popularidad como idioma en los navegadores web para crear páginas web dinámicas e interactivas.

Java es un lenguaje que tiene una popularidad similar cuando se construye un sistema de “backend”, que es una palabra elegante para “casi cualquier cosa”.

A pesar del prefijo común, no están relacionados; sus creadores son diferentes y también lo son sus historias de origen (como lo destacan otras respuestas).

Algunas de las características clave (y sus diferencias) de los idiomas son

  1. Java es un lenguaje de tipo estático mientras que Javascript es un lenguaje de tipo débil
  2. Ambos lenguajes son lenguajes interpretados (a diferencia de C, que se compila en el código de máquina según la máquina en la que se ejecutan )
  3. Javascript admite un sistema de objetos basado en prototipos , mientras que Java es un sistema de objetos con tipo nominal
  4. Java tiene un sistema de “paquete” bien desarrollado, mientras que el paquete Javascript (también conocido como módulos) no está predefinido. Esto tiene un impacto en compartir y reutilizar código
  5. Ambos lenguajes son compatibles con los requisitos fundamentales de la programación orientada a objetos, como encapsulación, herencia, abstracción y polimorfismo. Pero uno es un tipo “estático” y el otro “dinámico”, el estilo y el rigor de lograrlos son diferentes
  6. Ambos lenguajes admiten ciertos aspectos de la programación funcional como la recursión, funciones de orden superior, funciones de primera clase.
  7. Java tiene un conjunto más grande de estructura de datos básicos (diferentes tipos de mapas, listas, conjuntos) integrados en el lenguaje en comparación con Javascript. Esto podría tener un impacto si queremos implementar ciertos algoritmos u optimizaciones.
  8. Ambos idiomas están basados ​​en máquinas virtuales . A diferencia de C o C ++, en el que enviamos el programa directamente al sistema operativo subyacente para que se ejecute, en Javascript y Java, enviamos el programa a la máquina virtual para que se ejecute. La máquina virtual es responsable de administrar la memoria del programa, realizar optimizaciones en línea, seguridad de los programas en ejecución, etc.
  9. Java tiene un enfoque de concurrencia basado en hilos , mientras que Javascript tiene un enfoque de concurrencia basado en eventos . Esto tiene un impacto en la forma en que escribimos los programas.

Espero que esto te prepare para una inmersión profunda en este tema.

Java es un lenguaje de programación OOP.

mientras que Java Script es un lenguaje de script OOP.

Java crea aplicaciones que se ejecutan en una máquina virtual o navegador mientras

El código JavaScript se ejecuta solo en un navegador. El código Java debe compilarse mientras

El código JavaScript está todo en texto.

Videos paso a paso de Java

Tutorial paso a paso de Java

JavaScript es un primo (muy) distante de Java en el sentido de que también es un lenguaje OOP. Muchas de sus estructuras de programación son similares.

Sin embargo, JavaScript contiene un conjunto de comandos mucho más pequeño y simple que Java. Es más fácil de entender para el guerrero promedio de fin de semana.

Quizás se esté preguntando qué significa OOP por ahora. La programación orientada a objetos es un concepto relativamente nuevo, mientras que la suma de las partes de un programa conforma el todo. Piénselo de esta manera: está construyendo un modelo de automóvil. Primero construyes el motor. Puede estar solo. Es un motor y todos pueden ver que es un motor. Luego construyes el cuerpo. También puede estar solo. Finalmente, construyes el interior, incluidos los asientos, el volante y demás. Cada uno, por sí mismo, es un objeto. Pero no es un automóvil completamente funcional hasta que todas las piezas estén juntas. La suma de los objetos (partes) forman el todo.

Java y JavaScript difieren. La principal diferencia es que Java puede sostenerse por sí mismo mientras que JavaScript debe (principalmente) colocarse dentro de un documento HTML para funcionar. Java es un lenguaje mucho más grande y complicado que crea aplicaciones “independientes”. Un “applet” de Java (llamado así porque es una pequeña aplicación) es un programa totalmente contenido. JavaScript es texto que se introduce en un navegador que puede interpretarlo y luego lo promulga el navegador, aunque las aplicaciones web de hoy en día comienzan a difuminar la línea entre las aplicaciones de escritorio tradicionales y las que se crean utilizando las tecnologías web tradicionales: JavaScript, HTML y CSS.

Otra diferencia importante es cómo se presenta el idioma al usuario final (ese es usted cuando está navegando). Java debe compilarse en lo que se conoce como “lenguaje de máquina” antes de que pueda ejecutarse en la Web. Básicamente, lo que sucede es que después de que el programador escribe el programa Java y lo comprueba en busca de errores, él o ella entrega el texto a otro programa de computadora que cambia el código de texto a un idioma más pequeño. Ese lenguaje más pequeño está formateado para que la computadora lo vea como un programa establecido con puntos iniciales y finales definidos. No se le puede agregar nada y nada se puede restar sin destruir el programa.

JavaScript está basado en texto. Lo escribe en un documento HTML y se ejecuta a través de un navegador. Puede modificarlo después de que se ejecute y ejecutarlo una y otra vez. Una vez que se compila Java, se establece. Claro, puede volver al texto original y modificarlo, pero luego necesita compilar nuevamente.

Los applets de Java se ejecutan independientemente del documento HTML que los solicita (y Java también es el que ejecuta muchos dispositivos y dispositivos móviles, y no requiere un navegador web). Claro, aparecen en la página, pero el documento HTML hizo poco más que llamar a la aplicación y colocarla. Si el programador lo permite, muchas veces los parámetros pueden ser establecidos por el documento HTML. Esto incluye el color de fondo del applet del tipo de texto que muestra, etc. La entrega del applet se realiza mediante una descarga. El documento HTML requiere la aplicación, se descarga en la memoria caché del usuario y espera para ejecutarse. JavaScript depende totalmente del navegador para comprenderlo y hacer que cobre vida.

Java y JavaScript no están en la misma familia de lenguajes, y Java no fue una influencia importante en la semántica de JavaScript. Como otras personas señalaron, el nombre “JavaScript” fue una campaña de marketing de (en ese momento) Sun y Netscape [1]. A pesar de que JavaScript “se parece” a Java, y se comercializa como un complemento de Java, la mayoría de las influencias semánticas provienen de otras ramas de los idiomas: Self y Scheme son influencias pesadas.

Sin embargo, Java y JavaScript de esa época son casi completamente diferentes de Java y JavaScript que conocemos hoy. Así que me voy a centrar en el estado actual de ambos idiomas (Java 9 para Java y ECMAScript 2017 para JavaScript).

A medida que los idiomas evolucionan, tienden a incorporar características que se encuentran comúnmente en la investigación o son populares en otros idiomas, por lo que las cosas terminan convergiendo hasta cierto punto de todos modos, por lo que esta respuesta probablemente estará muy desactualizada en unos pocos años.

Las siguientes secciones enumerarán las diferencias (y similitudes, cuando corresponda) separadas por categorías, por lo que es más fácil comparar dónde difieren exactamente los dos idiomas.

SINTAXIS

Tanto Java como JavaScript tienen una sintaxis similar en varios lugares. Los comentarios, las palabras clave, los operadores, los delimitadores de bloque y algunas construcciones de procedimiento comunes (como for, while, if, etc.) son en su mayoría sintácticamente iguales. Esto no es sorprendente ya que ambos extraen de C aquí.

  • Ambos lenguajes separan expresiones y declaraciones, por lo tanto, los procedimientos requieren una declaración explícita de ” retorno “;
  • Ambos lenguajes tienen un argumento ” esto ” implícito en cada método, pero la forma en que se declaran estos métodos difiere.

En Java, los métodos solo pueden aparecer dentro de las declaraciones de clase y, por lo tanto, siempre se declaran de la siguiente manera:

( …) {

}

// P.ej:
clase F {
public void myMethod (int x, int y) {
devuelve esto. a + x + y;
}
}

En JavaScript, los métodos se pueden declarar dentro de una declaración de clase, dentro de un objeto literal o en el nivel de instrucción. Discutiremos por qué sucede esto cuando hablemos de las diferencias en los modelos de objetos más adelante.

// un método a nivel de declaración
función myMethod (x, y) {
devuelve esto. a + x + y;
}

// un método en una declaración de clase
clase F {
myMethod (x, y) {
devuelve esto. a + x + y;
}
}

// un método en un objeto literal
{
myMethod (x, y) {devuelve esto. a + x + y}
// alternativamente:
myMethod: function (x, y) {return this.a + x + y}
}

TIPO DE SISTEMA

Java tiene un sistema de tipos rudimentario, que admite tipos nominales, polimorfismo paramétrico y subtipo (con declaraciones de varianza). JavaScript no tiene un sistema de tipos.

Consulte la respuesta de Quildreen Motta a ¿Cuál es la diferencia entre los lenguajes de tipo dinámico y estático? para obtener detalles sobre qué son los sistemas de tipos y cómo se comparan entre sí los idiomas escritos / no escritos.

SEMÁNTICA DE EVALUACIÓN

Tanto Java como JavaScript usan semánticas de evaluación similares. Ambas son llamadas por valor (o llamadas por compartir, aunque nunca he visto personas que usen ese término fuera de CLU), ambas usan el orden aplicativo para evaluar argumentos, ambas tienen efectos colaterales sin restricciones .

Dicho esto, Java tiene un nivel superior que está restringido a declaraciones. Esto significa que dentro de un archivo fuente Java, todas las declaraciones y expresiones deben estar dentro de un método, y las cosas solo pueden suceder instanciando clases o invocando métodos. Esto es genial para cosas como la recarga en caliente.

En JavaScript, las declaraciones están permitidas en el nivel superior, por lo que puede colocar declaraciones y expresiones principalmente en cualquier lugar. Se evaluarán cuando se evalúe el archivo en sí. Esto es excelente para evitar los problemas con la sintaxis declarativa.

IMPLEMENTACIONES

La mayoría de las implementaciones de Java son un compilador anticipado (javac) que genera un código de bytes JVM, que luego es ejecutado por un JVM (esto puede ser un intérprete, un compilador de código nativo, hardware especializado que ejecuta el código de bytes directamente o cualquier combinación de estos: el Hotspot es una mezcla de intérprete y compilador, pero Graal, SubstrateVM y jaotc lo hacen más complicado). También hay implementaciones que compilan Java para otras cosas además del código de bytes JVM. GCC tenía soporte para Java, ExcelsiorJET todavía está vivo y utiliza optimizaciones guiadas por perfil, algunos compiladores Java-> JavaScript (GWT, JSweet, etc.). Puede haber intérpretes directos de Java (es decir, interpretar Java en lugar de JVM bytecode), pero no conozco ninguno.

Las implementaciones de JavaScript son probablemente más diversas. Históricamente, la mayoría de ellos eran intérpretes puros. En estos días es difícil encontrar una implementación de JavaScript que solo se interprete, la mayoría son una combinación de intérprete y compilación JIT (v8s más recientes, SpiderMonkey, Chakra, JSC), o solo compiladores JIT (v8s más antiguos). Puede haber compiladores AOT para el código nativo además del compilador de línea de base de v8, pero no conozco ninguno que sea notable (es decir, optimización).

Las máquinas virtuales para ambas implementaciones son sorprendentemente similares. v8 y Hotspot incluso confían en una arquitectura cercana, lo cual no es tan sorprendente dado que ambos obtuvieron su arquitectura de Self y fueron escritos por personas que trabajaron en Self VM. Pero además de eso, en su mayoría son JIT de método, ¿Graal es probablemente el único JIT de seguimiento?

Una diferencia importante en las implementaciones es probablemente la cantidad de compiladores JavaScript-> JavaScript, en comparación con los compiladores Java-> Java. El preempaque [2] es particularmente notable.

CONCEPTOS

Muchos conceptos se implementan en ambos idiomas:

  • Ambos admiten programación orientada a objetos hasta cierto punto (los modelos difieren, más sobre esto más adelante).
  • Ambos admiten estructuras procesales comunes (if, while, for).
  • Ambos admiten el manejo de errores basado en excepciones con el desbobinado de la pila (más sobre esto más adelante), con algunas pequeñas diferencias.
  • Ambos tienen valores primitivos además de los objetos, y los primitivos se encuadran automáticamente cuando necesitan actuar como objetos.
  • Los operadores trabajan principalmente en primitivas, y no son sobrecargables (pero hay diferencias, más sobre esto más adelante).
  • Ambos tienen un alcance léxico, con alcance de bloque (algunas peculiaridades de JavaScript aquí, más sobre esto más adelante).
  • Ambos tienen un espacio de nombres global al que todo el código tiene acceso (nuevamente, algunas diferencias se describirán más adelante).
  • Ambos tienen sintaxis declarativa para modificar un método o clase. Java tiene anotaciones, JavaScript tiene decoradores. La forma en que funcionan es muy diferente.
  • Java tiene una torre numérica más expresiva, JavaScript solo tiene puntos flotantes de doble precisión. Sin embargo, se han propuesto enteros de precisión arbitraria para JavaScript.
  • Si bien ambos tienen una estructura de conmutación, Java solo acepta constantes y JavaScript acepta cualquier valor (se comparan por igualdad estricta). Ambos interruptores incluyen fallos, como en C.
  • Ambos tienen un tipo de matriz común. Pero Java es una pieza de memoria homogénea de tamaño fijo, asignada contiguamente. JavaScript es una estructura de datos heterogénea y dispersa, que está más cerca de una tabla hash.
  • Ambos admiten la reflexión en tiempo de ejecución, aunque el soporte de Java es extremadamente limitado.
  • Ambos admiten programación de orden superior, aunque el soporte de Java es extremadamente limitado (Java 8 aborda principalmente limitaciones sintácticas).

Funcionalidad específica de Java (por ahora):

  • Modificadores de visibilidad (hay una propuesta para agregar miembros privados a las clases de JavaScript, pero no protegidos);
  • Bloques sincronizados (JavaScript no tiene un subproceso preventivo definido en la especificación del lenguaje, y las implementaciones a menudo son de un solo subproceso; Nashorn y Rhino son algunas de las excepciones);
  • Interfaces (principalmente declaraciones de tipo anteriores a Java 8, que no tiene sentido en JavaScript; en Java 8+ se duplican como mixins, que son compatibles de manera diferente en JavaScript);
  • Java organiza programas en paquetes en general, y Java 8 admite una cosa llamada “módulos” que en realidad es una unidad de compilación, es decir, no es una característica para admitir la modularidad, sino para agrupar un conjunto de paquetes para el compilador. Lo que JavaScript llama módulos, sin embargo, es ambos: una unidad de compilación y una pieza de código reutilizable; que está más cerca de cómo se usa el “módulo” en cualquier otro lugar.
  • Java tiene FFI para el código nativo descrito en la especificación del lenguaje. En JavaScript, cualquier cosa fuera de la especificación del lenguaje depende del host (implementación) para decidir.
  • Java tiene tipos Enum, que son básicamente un conjunto de constantes. JavaScript no tiene miembros constantes, pero también dado que los objetos son más penetrantes en JavaScript, el equivalente de las enumeraciones terminan siendo solo objetos.
  • Debido a que Java restringe las expresiones para que ocurran dentro de los cuerpos de los métodos, puede omitir ” this ” cuando el campo / método no es ambiguo. Esto no es posible en JavaScript porque siempre es ambiguo.
  • Java utiliza la inspección de pila para proporcionar políticas de seguridad para el código privilegiado. JavaScript no admite ningún tipo de separación de privilegios de este tipo (los reinos no son realmente eso).

Funcionalidad específica de JavaScript (por ahora):

  • Puede organizar programas en módulos. Un módulo es un conjunto de instrucciones que da como resultado un conjunto de enlaces para exportar, y puede incluir un conjunto de enlaces para importar desde otros módulos, identificados por identificadores de módulo. JavaScript no lo restringe a módulos (los scripts pueden no ser módulos), y los módulos no se agregaron hasta 2015, aunque existían muchas soluciones de primera clase para usuarios.
  • JavaScript admite generadores, que son funciones reanudables que capturan solo el marco de pila actual (piense en ello como una forma limitada de corutinas, si lo sabe).
  • JavaScript admite concurrencia basada en eventos en la especificación. Define un bucle de eventos, promesas para capturar valores eventuales y funciones asincrónicas prestadas de C # y amigos. Como resultado, la concurrencia en JavaScript tiende a ser mucho más cooperativa y basada en el paso de mensajes que preventiva con memoria compartida.
  • JavaScript tiene (y tenía) una declaración ” with ” y un concepto de Registro de entorno de objetos. En esencia, un Object ER le permite tener una región de alcance léxico de primera clase, excepto que el alcance es mutable y admite la herencia, y suceden todo tipo de cosas terribles. El modo estricto afortunadamente elimina esta “característica”.
  • JavaScript tiene proxies, que son un poderoso mecanismo de metaprogramación que permite anular los comportamientos de cualquier objeto. Sin embargo, esto está limitado por la cantidad de magia que rodea el modelo de objetos de JavaScript.
  • JavaScript tiene reinos. Los reinos son entornos de ejecución separados, que son una parte importante para asegurar las interacciones entre dominios no confiables en páginas web. No serían necesarios si JavaScript no tuviera un espacio de nombres global.
  • JavaScript especifica un requisito para las llamadas de cola adecuadas. Es decir, todas las llamadas en posición de cola deben realizarse en un espacio de pila limitado (la pila no puede crecer linealmente en el número de llamadas de función). Guy Steele ha hablado acerca de cómo las llamadas de cola son un requisito para la abstracción adecuada en los lenguajes orientados a objetos [3], a pesar de que con mayor frecuencia se asocian con lenguajes funcionales. A pesar de esto, hay muchos problemas que los implementadores plantearon sobre la implementación de esto en máquinas virtuales existentes [4], y en la práctica solo Apple lo ha implementado en JavaScript Core.

Bien, entonces hay muchas características específicas pequeñas en cada lado. Pero hablemos de las diferencias en cosas que se ven iguales en ambos idiomas al principio.

MODELO DE OBJETO

Java es un lenguaje simple basado en clases. Las clases son declaraciones de cosas comunes a un conjunto de objetos (las clases no son objetos en Java, lo que al menos evita parte de la complejidad con “¿cuál es la clase de la clase X?”), Cada clase puede heredar de otra clase, y las clases Definir un conjunto de miembros y métodos. Los miembros / métodos estáticos son compatibles, pero podría decirse que no están orientados a objetos. Los objetos son piezas simples que describen cuál es su clase (el diseño del objeto) y cuál es su estado de instancia, muy simple y muy compacto.

JavaScript es un lenguaje simple basado en prototipos. Solo hay objetos en el lenguaje, los objetos pueden heredar directamente de otro objeto, y los objetos son solo un conjunto de ranuras (donde una ranura es un par clave / valor, siendo el valor cualquier objeto o primitivo).

Además de esto, JavaScript admite muchas otras características:

  • Getters y Setters permiten anular el comportamiento del acceso a la propiedad (” ab ” da como resultado una llamada al método) y la asignación de propiedades (” ab = c ” da como resultado una llamada al método).

punto constante = {
_x: 0,
obtener un () {return this.x + 1}
establecer un (v) {this.x = v * 2}
};

punto.a; // => 1
punto.a = 2;
punto.a; // => 5

  • Ningún objeto tiene un diseño fijo. Las ranuras se agregan al establecerles valores y se eliminan mediante el operador ” delete “. Esto hace que la optimización sea mucho más difícil, pero permite algunas expresiones idiomáticas interesantes. En esencia, en JavaScript, los diseños de objetos se definen iterativamente:

punto constante = {};
punto.x = 1;
punto.y = 2;
point.toString = function () {
devuelve this.x + ‘,’ + this.y;
}
point.toString (); // => ‘1, 2’

  • La herencia está sujeta a retraso y puede cambiar en cualquier momento. Básicamente, puede cambiar de qué objeto hereda un objeto.

const a = {x: 1};
const b = {x: 2};
const c = {y: 3};

Object.setPrototypeOf (c, a); // c ahora hereda de un

cx; // => 1
cy; // => 3

Object.setPrototypeOf (c, b); // c ahora hereda de b

cx; // => 2
cy; // => 3

  • ECMAScript 2015 presenta Símbolos, que son una especie de clave única (en contraste con el espacio de nombres plano de las claves con valores de cadena).

const foo = {};
const a1 = Símbolo (“a”);
const a2 = Símbolo (“a”);

foo [a1] = 1;
foo [a2] = 2;

foo [a1]; // => 1
foo [a2]; // => 2

  • Las funciones regulares hacen el trabajo de funciones, métodos, constructores y clases. La declaración de ” class ” de ECMAScript 2015 tiene en gran medida la misma semántica que las funciones regulares para la compatibilidad con versiones anteriores.
  • No se garantiza que ” new Foo() ” devuelva un objeto Foo . Si la función Foo devuelve cualquier valor que sea un objeto, ese valor se devuelve desde la expresión.
  • ab ” cuando “ b ” es un método de “ a ” no vincula el método a “ a ”, como cabría esperar. Java no tenía este problema porque no era posible referirse a un método directamente hasta Java 8, y ” a::b ” de Java 8 vincula el método a ” a “. Esto termina causando mucha confusión en JavaScript sobre lo que significa ” this ” una vez que las personas comienzan a pasar los métodos, probablemente porque las personas no piensan en ” this ” como un argumento habitual proporcionado en el momento en que se llaman los métodos.

MANEJO DE EXCEPCIONES

Tanto JavaScript como Java tienen objetos de excepción, que pueden ser arrojados por cualquier código con una declaración ” throw ” y capturados con una declaración ” try “. Cuando se detecta, la pila se desenrolla (es decir, no se puede transferir el control al lugar donde ocurrió la instrucción ” throw “), y se ejecuta el bloque ” catch ” de la instrucción ” try “, con una variable local vinculada al valor arrojado.

Algunas diferencias entre ellos:

  • En Java, la mayoría de las excepciones están marcadas y deben capturarse o aparecer en la firma de la función.
  • En Java es posible tener más de un bloque catch, ya que el bloque catch describe qué tipo de excepción espera. Se utilizará la primera coincidencia (donde el valor arrojado es un subtipo de la excepción descrita) en un bloque catch.
  • En JavaScript puede arrojar cualquier valor, incluso primitivas. En Java solo puedes lanzar algo que sea Throwable.

OPERADORES

En su mayoría tienen el mismo conjunto de operadores comunes. Pero algunos de ellos realmente no hacen lo que esperarías en JavaScript.

  • Todos los operadores en JavaScript que trabajan en primitivas harán conversiones de tipo, posiblemente llamando a métodos arbitrarios en los operandos. En Java, hay algún tipo de conversión con primitivas concatenadas en una cadena, pero eso es todo.
  • En JavaScript, ” a instanceof b ” es una llamada al método (” b[Symbol.hasInstance](a) “), sin embargo, aún requiere que ” b ” sea una función (o clase) de constructor en este caso.

ALCANCE LEXICAL

Java y JavaScript usan el alcance léxico, y ambos admiten el alcance de bloque. JavaScript también admite el alcance de funciones (con ” var “). Esto puede ser confuso para las personas que esperan de lenguajes basados ​​en bloques como C y Jav

More Interesting

¿Cuáles son algunas de las compañías tecnológicas más grandes para las que cualquier ingeniero de software aspiraría a trabajar?

¿Debo comprar una computadora portátil con Windows y descargar el sistema operativo Linux, o debo comprar una computadora portátil con sistema operativo Linux?

¿Cuáles son los beneficios de aprender JavaScript como ingeniero de software?

¿Es el ingeniero de control de calidad de software un trabajo difícil de hacer?

¿Es posible que un ingeniero de software gane suficiente dinero para comprar una casa en Munich?

¿Son los ingenieros de software informáticos?

¿Cómo contrata Airbnb a los pasantes de ingenieros de software?

¿Qué tipo de daño al público pueden causar los ingenieros de software?

¿Se les enseña a los ingenieros de software sobre piratería (redes, sitios web, aplicaciones, etc.)?

¿Cuál es la cantidad máxima de tiempo que los ingenieros de software profesionales pueden codificar (y mantener la concentración) sin estirarse?

¿Cuál es su opinión sobre el hecho de que un gran número de personas extremadamente inteligentes en el Valle están trabajando para tratar de hacer que más personas hagan clic en los enlaces?

Cómo mantenerme actualizado sobre (casi) todo o al menos lo más importante sobre ingeniería de software

¿Crees que los ingenieros de software del pasado tuvieron que ser un poco más inteligentes que los de hoy?

¿Cuáles son las diferencias entre los ingenieros de sistemas integrados y los ingenieros de firmware?

A los 25 años, ¿cuál era su situación financiera como ingeniero de software?