Running JAVA

Caracteristicas

Multiplataforma. Es independiente de la plataforma, ejecutable en cualquier sistema con máquina virtual
Implica que un programa escrito en java debe ser COMPILADO para posteriormente ser INTERPRETADO por la JVM o JRE.

No hay punteros (lo que le hace más seguro y fácil de manejar)
A diferencia de algunos lenguajes de programación como C o C++, no existen punteros en el sentido tradicional que permiten acceder directamente a direcciones de memoria y manipularlas.
En lugar de punteros, Java utiliza referencias de objetos. Cuando trabajas con objetos en Java, estás manipulando referencias a esos objetos, no direcciones de memoria directas.

No es híbrido, sino totalmente orientado a objetos (aunque muchos programadores tienen reservas respecto a esta aseveración).
En una aplicación java solo hay clases; no existen datos sueltos ni procedimientos.

Distribuido
Implementa excepciones (control de errores) de forma nativa

Es un lenguaje interpretado (lo que acelera su ejecución remota, aunque provoca que las aplicaciones Java sean más lentas en la ejecución que las aplicaciones escritas en lenguajes compilados como C++).

Fuertemente tipificado o de tipado estático.
La fuerte tipificación significa que el tipo de una variable es verificado en tiempo de compilación, antes de que el programa se ejecute.
Esto contrasta con lenguajes de tipado débil o dinámico, donde los tipos pueden cambiar en tiempo de ejecución y las conversiones implícitas entre tipos son más flexibles.

Multitarea (admite programación multihilo / multi-hebra). Permite múltiples hilos de ejecución, es decir que se ejecuten varias tareas en paralelo.

Tipos de datos y control de sintaxis más rigurosa que los lenguajes C y C++, lo que facilita la gestión de errores
Diseñado como una mejora de C++
Permite excepciones

Case sensitive. Se deben respetar las mayúsculas y las minúsculas.

Lenguaje 4GL (lenguajes de cuarta generación)

Entorno. Versiones. Libros. Herramientas. JDK. Caracteristicas.

Identificadores. Partes de un programa.

Variables. Constantes. Tipos primitivos. Operadores. Comentarios. Palabras reservadas.

Variables

Los nombres de variables pueden contener letras y números (pero no pueden comenzar con un número) y algún otro símbolo, como el de subrayado, pero no podrán contener otros muchos símbolos, como los de las distintas operaciones matemáticas posibles (+,-,*,/), ni llaves o paréntesis, ni vocales acentuadas (á,é,í,ó…), ni eñes…

Tipos de datos

TIPODESCRIPCIÓNDEFAULTTAMAÑOEJEMPLOS
booleantrue o falseFALSE1 bittrue, false
charcarácter unicode (una letra del alfabeto, dígito
numérico, o simbolo de puntuación)
\u000016 bits‘a’, ‘\u0041’, ‘\101’, ‘\\’
byteentero complemento de dos08 bits100, -50
shortentero complemento de dos (entero corto)016 bits10000,-20000
int (intiger/entero)entero complemento de dos032 bits100000,-2,-1,0,1,2,-200000
longentero complemento de dos064 bits-2L,-1L,0L,1L,2L
floatcoma flotante IEEE 754032 bits1.23e100f, -1.23e-100f, .3ef, 3.14f
doublecoma flotante IEEE 754 (precisión de 14 cifras)064 bits1.2345e300d, -1.2345e-300f, 1e1d

Los tipos de datos primitivos se pueden organizar en 4 grupos:
Numéricos enteros: Son los tipos byte, short, int y long. Los 4 representan números enteros con signo.
Carácter: El tipo char representa un carácter codificado en el sistema unicode.
Numérico decimal: Los tipos float y double representan números decimales en coma flotante.
Lógicos: El tipo boolean es el tipo de dato lógico; los dos únicos posibles valores que puede representar un dato lógico son true y false.

No son datos primitivos en JAVA:
Fecha
Cadena de texto (string)

Control de Flujos

if / Else if

Switch

For

Sintaxis:
for(int i = valor inicial; i <= valor final; i = i + paso)
for(i=1 ; i <= 10 ; i ++) {

break, continue

Valor inicialíndice de control, inicialización, valor inicial
Condicióncondición booleana, condición de continuidad del ciclo
incremento/decrementomodificación del índice tras cada bucle

length es una propiedad de arreglos (arrays) que indica el tamaño o la longitud del arreglo. Se utiliza comúnmente en bucles for para iterar sobre todos los elementos de un arreglo. Sin embargo, es importante tener en cuenta que length es una propiedad, no un método, por lo que no lleva paréntesis.

int[] numeros = {1, 2, 3, 4, 5};

// Iterar sobre todos los elementos del arreglo 'numeros'
for (int i = 0; i < numeros.length; i++) {
    System.out.println(numeros[i]); // Imprimir cada elemento del arreglo
}

While

Es un bucle que va a repetir la sentencia más de una vez, mientras la condición sea cierta.

Do-While

Se caracteriza porque ejecuta un conjunto de instrucciones sin realizar previamente la evaluación de la expresión relacional y/o lógica.

for-each

El bucle «for each» (también conocido como «for-in» o «for-of«) es una característica en Java que se utiliza para recorrer (iterar sobre una secuencia de elementos) una colección (como un arreglo o una lista) de manera más sencilla y concisa. Proporciona una forma de iterar sobre cada elemento de una colección sin tener que utilizar un índice para acceder a cada elemento.

Es importante destacar que el bucle for-each no proporciona un índice explícito como lo hace el bucle for tradicional, por lo que no se puede acceder al índice del elemento directamente. Este tipo de bucle es útil cuando solo se necesita acceder a los elementos de una colección sin preocuparse por los índices.

Array (ventores, matrices, arreglos)

Un array es una variable que puede contener varios datos del mismo tipo.
Colección de datos del mismo tipo

En Java, todas las matrices se asignan dinámicamente.

Una variable array en Java se declara como otras variables con corchetes [ ] después del tipo de datos.

Las variables en el array están ordenadas y cada una tiene un índice que comienza desde 0.
(Se empieza a numerar desde 0 y se termina en n-1)

El array Java también se puede usar como un campo estático, una variable local o un parámetro de método.
El tamaño de un array debe especificarse mediante un valor int y no, long o short.
La superclase directa de un tipo de array es Object.
Cada tipo de array implementa las interfaces Cloneable y java.io.Serializable.

El array puede contener tipos de datos primitivos así como también objetos de una clase según la definición del array. En el caso de los tipos de datos primitivos, los valores reales se almacenan en ubicaciones de memoria contigua. En el caso de los objetos de una clase, los objetos reales se almacenan en heap.

Wrappers

Los Wrappers java son utilizados para convertir cadenas de caracteres (texto) en números.
Normalmente usamos tipos primitivos y no objetos. Sin embargo, existe una manera de que estos datos puedan ser objetos, usando las llamadas clases envoltorio.
Los wrappers son útiles en situaciones en las que se necesita tratar a los tipos primitivos como objetos, por ejemplo para utilizarlos en colecciones o para invocar métodos que esperan un objeto como argumento.

Interfaces
Paradigma Funcional
Excepciones. Try / catch / Finally.

Colecciones

API Java

java.langjava.utiljava.iojava.netjava.sqljava.awtjava.swingjavax.swingjavax.servletjavax.xmljava.niojavax.mailjava.mathjavax.mathjava.time
BooleanArrayListBufferedReaderContentHandlerConnectionClaseJButtonJFrameHttpServletDocumentPathSessionBigDecimalBigDecimalChronoField
ByteCalendarBufferedWriterContentHandlerFactoryStatementColorJComboBoxJButtonHttpServletRequestElementFilesMessageBigIntegerBigIntegerChronoUnit
CharacterCollectionsByteArrayInputStreamCookieManagerPreparedStatementGraphicsJDialogJLabelHttpServletResponseNodeBufferedReaderStoreMathContextMathContextClock
Classconcurrent.ExecutorByteArrayOutputStreamCookiePolicyCallableStatementGraphics2DJFrameJTextFieldServletConfigAttrBufferedWriterTransportRoundingModeRoundingModeDateTimeFormatter
DoubleDateDataInputStreamCookieStoreResultSetGraphicsDeviceJLabelJTextAreaServletContextTextFileChannelFolderMutableBigIntegerMutableBigIntegerDayOfWeek
EnumFunctionDataOutputStreamDatagramSocketSQLExceptionGraphicsEnvironmentJListJListServletExceptionCommentByteBufferAddressMutableBigDecimalMutableBigDecimalDuration
FloatHashMapFileHttpClientDatabaseMetaDataRectangleJMenuBarJComboBoxServletOutputStreamProcessingInstructionCharBufferBigRationalInstant
IntegerHashSetFileInputStreamHttpCookieSavepointFontJPanelJMenuPrintWriterTransformerSelectorBigComplexLocalDate
LongIteratorFileOutputStreamHttpRequestImageJProgressBarJMenuBarTransformerFactoryServerSocketChannelComplexLocalDateTime
MathLinkedListFileReaderHttpResponseComponentJScrollPaneJMenuItemSocketChannelLocalTime
NumberListFileWriterHttpServerContainerJSliderJRadioButtonAsynchronousFileChannelMonth
ObjectMapInputStreamReaderHttpURLConnectionFrameJSpinnerJCheckBoxMonthDay
PackagePropertiesIOExceptionInetAddressPanelJSplitPaneJTablePeriod
ProcessBuilder.RedirectRandomObjectInputStreamMulticastSocketButtonJTableJTreeWeek
SecurityManagerScannerObjectOutputStreamMalformedURLExceptionLabelJTextAreaJFileChooserWeekFields
ShortSetOutputStreamWriterProxyTextFieldJTextFieldJColorChooserYear
StringStackPipedInputStreamProxySelectorTextAreaJTreeJOptionPaneYearMonth
StringBufferStreamPipedOutputStreamServerSocketplaf.basicZonedDateTime
StringBuilderTreeMapPrintWriterSocket
SystemVectorPushbackInputStreamURI
ThreadReaderURL
ThrowableStringReaderURLConnection
VoidStringWriter
InterruptedExceptionWriter

Rest API
Jdbc (conexión a base de datos). MySQL. TCP IP.

JSP (Java Server Pages)
Servlets
Aplicaciones Web
Streams. Excel.
Lambda / enums

IDEs (Eclipse / IntelliJ / Netbeans)

Los IDEs (Entornos de Desarrollo Integrado) son herramientas indispensables para el desarrollo de software en Java, ya que proporcionan características como edición de código, depuración, compilación y gestión de proyectos, entre otras.

Java Project
Project
Package
Class
Interface
Enum
Annotation
Source Folder
Java Working Set
Folder
File
Untitle Text File
Task
JUnit Test Case
Example
Other

Ctrl+F11Run

AcciónAtajoDescripción
Crear metodo mainEscribir main,pulsar CTRL + ESPACIO y seleccionar main methodImplementa : public static void main (String[] args){ }
Impresion rápida por consolaEscribir syso y pulsar CTRL + ESPACIOImplementa : System.out.println();
Sentencia IFEscribir if,pulsar CTRL + ESPACIO y seleccionar la opción statementImplementa : if (condition) {} o con la opción else
Bucle DESDE (for)Escribir for,pulsar CTRL + ESPACIO y seleccionar la opciónImplementa : for (int i = 0; i < array.length; i++) {} u otras opciones
Bucle MIENTRAS (while)Escribir while,pulsar CTRL + ESPACIO y seleccionar la opciónImplementa : while (condition) {} u otras opciones
Bucle REPETIR HASTA (do..while)Escribir do,pulsar CTRL + ESPACIO y seleccionar la opciónImplementa : do {} while (condition);

Maven (Constructor y Gestor de Proyectos)

Apache Maven is a software project management and comprehension tool.
Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
herramienta open-source que se creó con el objetivo de simplificar los procesos de build (compilar y generar ejecutables a partir del código fuente).
Nos permite compilar cualquier tipo de proyecto, librándonos de todas las dificultades que hay por detrás
(ej: configurar el proceso de build, analizar que partes del codigo se deben compilar, que librerias utiliza el codigo, donde incluirlas, que dependencias de compilación hay en un proyecto).
Maven es una herramienta capaz de gestionar un proyecto software completo
desde la etapa en la que se comprueba que el código es correcto, hasta que se despliega la aplicación, pasando por la ejecución de pruebas y generación de informes y documentación.

– Validación (validate): Validar que el proyecto es correcto.
– Compilación (compile).
– Test (test): Probar el código fuente usando un framework de pruebas unitarias.
– Empaquetar (package): Empaquetar el código compilado y transformarlo en algún formato tipo .jar o .war.
– Pruebas de integración (integration-test): Procesar y desplegar el código en algún entorno donde se puedan ejecutar las pruebas de integración.
– Verificar que el código empaquetado es válido y cumple los criterios de calidad (verify).
– Instalar el código empaquetado en el repositorio local de Maven, para usarlo como dependencia de otros proyectos (install).
– Desplegar el código a un entorno (deploy).

Tomcat

https://tomcat.apache.org/
Tomcat 9.0.50 Released

Es un contenedor de servlets y un servidor de aplicaciones Web

Tomcat proporciona un entorno de ejecución para aplicaciones Web que cumplen con los estándares Java Servlet y JavaServer Pages. Esto significa que puedes desarrollar aplicaciones Web utilizando estos estándares y ejecutarlas en Tomcat sin tener que preocuparte por el servidor Web subyacente.

Spring. Spring Boot. Hibernate.

Testing Automatico (JUnit)

Microservicios
Patrones de Diseño

Libros

Francisco Blasco – Programación Orientada a Objetos en JAVA-RA-MA Editorial (2021)
Programación Orientada a Objetos en JAVA (Bermudez) MIW.JEE.POOJ
Introducción a la programación (Vanegas Mendoza) – Introducción Java Parte 1
Programación básica en lenguaje JAVA (Sánchez Asenjo)
Programación Orientada a Objetos en JAVA (Bermudez)
Aprenda Java como si estuviera en primero
Web Scraping with Java (Ryan Mitchell) jsoup library
Fundamentos de programación (Villalobos)
Notas Introducción Lenguaje Programación JAVA (Ortega Arjona)
Ejercicios de programación en JAVA (Pérez Monte)
(Lopez Davila) Curso de Java – conexiones con base de datos MySQL
(Dean) Introducción a la programación con JAVA
(Jeff Friesen) Java XML and JSON: Document Processing for Java SE
Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
Java Intensive Coding Bootcamp (Sanjib Sinha)
(Balaji Varanasi) Introducing Maven
Trisha Gee – 97 Things every JAVA Programmer should Know-o reilly (2022)
Real-World Software Development – A Project-Driven Guide to Fundamentals in Java. by Raoul-Gabriel Urma, Richard Warburton
Java Intensive Coding Bootcamp LEARN LANGUAGE BASICS AND ALGORITHM More Than Hundred Difficult Problems With Solutions – Explained Step by Step, Designed for Absolute Beginners by Sanjib Sinha [Sinha
(Kiet Tran) Introduction to Web Service with Java

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *