Técnicas Flashcards
¿Qué es la independencia de la plataforma?
La independencia de la plataforma significa que puede ejecutar el mismo programa Java en cualquier sistema operativo. Por ejemplo, puede escribir un programa Java en Windows y ejecutarlo en Mac OS.
¿Qué es JVM y es independiente de la plataforma?
Java Virtual Machine (JVM) es el corazón del lenguaje de programación Java. JVM es responsable de convertir el código de bytes en código legible por máquina. JVM no es independiente de la plataforma, por eso tiene diferentes JVM para diferentes sistemas operativos. Podemos personalizar JVM con Opciones de Java, como asignar memoria mínima y máxima a JVM. Se llama virtual porque proporciona una interfaz que no depende del sistema operativo subyacente.
¿Cuál es la diferencia entre JDK y JVM?
Java Development Kit (JDK) es para fines de desarrollo y JVM es parte de él para ejecutar los programas java.
JDK proporciona todas las herramientas, ejecutables y binarios necesarios para compilar, depurar y ejecutar un programa Java. La parte de ejecución es manejada por JVM para proporcionar independencia de la máquina.
¿Cuál es la diferencia entre JVM y JRE?
Java Runtime Environment (JRE) es la implementación de JVM. JRE consta de binarios JVM y java y otras clases para ejecutar cualquier programa con éxito. JRE no contiene ninguna herramienta de desarrollo como compilador java, depurador, etc. Si desea ejecutar cualquier programa java, debe tener JRE instalado.
¿El compilador de Java se almacena en JDK, JRE o JVM?
La tarea del compilador de Java es convertir el programa de Java en código de bytes, tenemos javacejecutables para eso. Por lo tanto, debe almacenarse en JDK, no lo necesitamos en JRE y JVM son solo las especificaciones.
¿Cómo logra Java la independencia de la plataforma?
Cuando decimos que Java es independiente de la plataforma, lo que significa que los programas de Java no dependen de ninguna plataforma, arquitectura o sistema operativo como Windows o Linux. Java logra esto mediante el uso de la máquina virtual Java, cuando los programas Java se compilan, se convierten en un archivo .class, que es una colección de código de bytes y JVM lo puede entender directamente.
Entonces, el mismo programa Java puede ejecutarse en cualquier sistema operativo, solo JVM puede diferir según el sistema operativo, pero todas las JVM pueden comprender el código de bytes convertido, así es como Java logra la independencia de la plataforma.
[Imagen]
¿Por qué Java no es un lenguaje puro orientado a objetos?
No se dice que Java sea puramente orientado a objetos porque admite tipos primitivos como int, byte, short, long, etc. Creo que aporta simplicidad al lenguaje al escribir nuestro código. Java podría tener objetos de envoltura para los tipos primitivos, pero solo para la representación, no habrían proporcionado ningún beneficio.
Como sabemos, para todos los tipos primitivos tenemos clases contenedoras como Integer, Long, etc. que proporcionan algunos métodos adicionales.
¿Java es pasar por valor o pasar por referencia?
Esta es una pregunta muy confusa, sabemos que las variables de objeto contienen la referencia a los Objetos en el espacio del montón. Cuando invocamos cualquier método, se pasa una copia de estas variables y se almacena en la memoria de pila del método. Podemos probar cualquier lenguaje, ya sea que se pase por referencia o pase por valor a través de un método de intercambio genérico simple, para obtener más información, lea Java es Pasar por valor y No pasar por referencia.
¿Qué es una clase?
Una clase es una plantilla que define la forma de un objeto; en ella se agrupan datos y métodos que operarán sobre esos datos.
¿Qué es un objeto?
Representa las entidades de la vida real. Un objeto consiste en:
- Estado: está representado por atributos de un objeto. También refleja las propiedades de un objeto.
- Comportamiento: se representa mediante métodos de un objeto. También refleja la respuesta de un objeto con otros objetos.
- Identidad: le da un nombre único a un objeto y permite que un objeto interactúe con otros objetos.
¿Qué es una interfaz en Java? ¿Cuál es el usuario real de una interfaz?
- Como una clase abstracta, la interfaz también está ahí para especificar el contrato de una API. Es compatible con el concepto de abstracción OOP, ya que define solo el comportamiento abstracto. Dirá que su programa dará salida, pero cómo queda en manos de los implementadores. El uso real de la interfaz para definir tipos y aprovechar el polimorfismo. Consulte la respuesta para obtener una explicación y una discusión más detalladas.
- Las interfaces son conceptos básicos del lenguaje de programación Java y se utilizan mucho no solo en JDK, sino también en los patrones de diseño de Java, la mayoría de los marcos y herramientas. Las interfaces proporcionan una forma de lograr la abstracción en Java y se utilizan para definir el contrato para que las subclases lo implementen.
Las interfaces son buenas como punto de partida para definir el tipo y crear una jerarquía de nivel superior en nuestro código. Dado que una clase Java puede implementar múltiples interfaces, es mejor usar interfaces como superclase en la mayoría de los casos. Lea más en la interfaz java.
¿Que es una clase abstracta?
- Una clase abstracta es una clase que está incompleta. No puede crear una instancia de una clase abstracta en Java. Se proporcionan para definir el comportamiento predeterminado y garantizar que el cliente de esa clase adore los contratos que se definen dentro de la clase abstracta. Para utilizarlo, debe ampliar e implementar sus métodos abstractos. Por cierto, en Java, una clase puede ser abstracta sin especificar ningún método abstracto.
- Las clases abstractas se utilizan en Java para crear una clase con alguna implementación de método predeterminada para las subclases. Una clase abstracta puede tener un método abstracto sin el cuerpo y también puede tener métodos con implementación.
La palabra clave abstracta se utiliza para crear una clase abstracta. Las clases abstractas no se pueden instanciar y se usan principalmente para proporcionar una base para que las subclases extiendan e implementen los métodos abstractos y anulen o usen los métodos implementados en la clase abstracta.
¿Comparar clase abstracta vs interfaz?
- Desde Java 8 en adelante, la diferencia entre la clase abstracta y la interfaz en Java se ha minimizado, ahora incluso la interfaz puede tener una implementación en términos de método predeterminado y estático. Por cierto, en Java, aún puede extender una sola clase pero puede extender la herencia múltiple. Se usa una clase abstracta para proporcionar una implementación predeterminada con solo algo que se puede personalizar, mientras que una interfaz se usa mucho en la API para definir el contrato de una clase.
- En Java, la diferencia clave es que la clase abstracta puede contener un método no abstracto pero la interfaz no puede, pero desde Java 8 en adelante, la interfaz también puede contener métodos estáticos y predeterminados que no son abstractos. Vea la respuesta para una discusión más detallada, ya que he descrito muchos puntos allí.
[Imagen] - La palabra clave abstracta se utiliza para crear una clase abstracta, mientras que interfaz es la palabra clave para las interfaces.
Las clases abstractas pueden tener implementaciones de métodos, mientras que las interfaces no.
Una clase puede extender solo una clase abstracta pero puede implementar múltiples interfaces.
Podemos ejecutar una clase abstracta si tiene un método main () mientras que no podemos ejecutar una interfaz.
Algunas diferencias más en detalle se encuentran en Diferencia entre clase abstracta e interfaz.
¿Es Java un lenguaje puro orientado a objetos? si no por qué?
Java no es un lenguaje de programación orientado a objetos puro, por ejemplo, hay muchas cosas que puede hacer sin objetos, por ejemplo, métodos estáticos. Además, las variables primitivas no son objetos en Java. Consulte la respuesta para obtener una explicación más detallada.
¿Qué es el polimorfismo?
Propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.
Ejemplo: Animales, hacerSonido().
¿Cuál es la diferencia entre abstracción y polimorfismo en Java?
La abstracción generaliza el concepto y el polimorfismo le permite usar una implementación diferente sin cambiar su código. Sin embargo, este diagrama explica bastante bien la abstracción:
¿Qué es la composición en Java?
La composición es la técnica de diseño para implementar una relación en las clases. Podemos usar la composición de objetos para la reutilización de código.
La composición de Java se logra mediante el uso de variables de instancia que hacen referencia a otros objetos. El beneficio de usar la composición es que podemos controlar la visibilidad de otros objetos para las clases del cliente y reutilizar solo lo que necesitamos. Lea más con el ejemplo en Java Composition example.
¿Cuál es el beneficio de la composición sobre la herencia?
Una de las mejores prácticas de la programación Java es “favorecer la composición sobre la herencia”. Algunas de las posibles razones son:
Cualquier cambio en la superclase podría afectar a la subclase aunque no estemos usando los métodos de la superclase. Por ejemplo, si tenemos un método test () en la subclase y de repente alguien introduce un método test () en la superclase, obtendremos errores de compilación en la subclase. La composición nunca enfrentará este problema porque estamos usando solo los métodos que necesitamos.
La herencia expone todos los métodos y variables de superclase al cliente y si no tenemos control en el diseño de superclase, puede conducir a agujeros de seguridad. La composición nos permite proporcionar acceso restringido a los métodos y, por lo tanto, más seguro.
Podemos obtener un enlace en tiempo de ejecución en la composición donde la herencia enlaza las clases en tiempo de compilación. Por tanto, la composición proporciona flexibilidad en la invocación de métodos.
Puede leer más sobre los beneficios anteriores de la composición sobre la herencia en composición java vs herencia.
¿Qué es Enum en Java?
Enum se introdujo en Java 1.5 como un nuevo tipo cuyos campos consisten en un conjunto fijo de constantes. Por ejemplo, en Java, podemos crear Dirección como una enumeración con campos fijos como ESTE, OESTE, NORTE, SUR.
enum es la palabra clave para crear un tipo enum y similar a la clase. Las constantes de enumeración son implícitamente estáticas y finales. Lea más en detalle en java enum.
¿Qué es la recolección de basura?
La recolección de basura es el proceso de mirar la memoria del montón, identificar qué objetos están en uso y cuáles no, y eliminar los objetos no usados. En Java, el recolector de basura maneja automáticamente el proceso de desasignación de memoria.
Podemos ejecutar el recolector de basura con código Runtime.getRuntime().gc()o usar el método de utilidad System.gc(). Para obtener un análisis detallado de la memoria de pila y la recolección de basura, lea Java Garbage Collection.
¿Qué es la programación funcional?
El nombre ya lo sugiere: la programación funcional o functional programming se centra en las funciones. En un programa funcional, todos los elementos pueden entenderse como funciones y el código puede ejecutarse mediante llamadas de función secuenciales.
- Scala.
¿Qué es spring?
Spring es un framework de código abierto para la creación de aplicaciones empresariales Java, con soporte para Groovy y Kotlin.
Tiene estructura modular y una gran flexibilidad para implementar diferentes tipos de arquitecturas según las necesidades de la aplicación.
¿Qué es un framework?
Framework = marco de trabajo
La librería es (es una “definición” por arriba): es un conjunto de clases, funciones que te permiten realizar algunos procesos. Ej: librería matemática que se puede utilizar para realizar una integral.
Un framework es un entorno de “trabajo compuesto” por “reglas” y “herramientas” que facilitan enormemente el desarrollo de aplicaciones.
Un framework es un marco de trabajo, es un conjunto de
Convenciones, estándares o paradigmas y buenas prácticas.
Funcionalidades costosas ya desarrolladas.
Nos ayuda a ahorrarnos trabajos.
El objetivo: Servir como base para tus programas. No reinventar la rueda. Evitar tareas repetitivas. Aumentar la productividad. Favorecer el trabajo en equipo. Infundirte buenas prácticas.
Un framework va más allá que una API.
Spring MVC nos permite escribir fácilmente una página web.
Usamos spring para desarrollar…
Aplicaciones de escritorio, web clásicas, web reactivas, microservicios…
Aplicaciones que acceden a bases de datos via SQL, con un ORM, bases de datos NoSQL…
Aplicaciones con seguridad clásica, OAuth 2.0, JWT…
Aplicaciones pequeñas, medianas y grandes, escalables, a través de contenedores, en la nube…
(Esto no se si importa)
Principio de Inversión de Dependencia (DIP)
Los módulos de alto nivel no deben depender de los módulos de bajo nivel.
Abstracciones sobre implementaciones.
Nos ayudará a crear código desacoplado.
El patrón IoC es una aplicación de este principio.
Inversión de Control (IoC)
También se lo llama como principio de hollywood.
“No nos llames, nosotros te llamamos” (Principio de Hollywood)
—-
¿Qué significa REST?
REST son las siglas de REpresentational State Transfer, que utiliza el protocolo HTTP para enviar datos de cliente a servidor, p. un libro en el servidor se puede entregar al cliente usando JSON o XML.