Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Tutoriales / Tutorial de Java - JAVA para aplicaciones corporativas

Tutorial de Java - JAVA para aplicaciones corporativas

 ***** (115 opiniones)
Creative Commons Tutorial de Agustín Froufe - 29 de Agosto de 2005
Temas Relacionados: Java
7. JAVA para aplicaciones corporativas
Java actualmente está en boca de todos, Java e Intranet son las palabras de moda. Pero, surge la pregunta de si esta es una buena tecnología para desarrollar aplicaciones corporativas. Y la respuesta es afirmativa y voy a proponer argumentos para esa afirmación. En donde la red sea algo crítico, Java facilita tremendamente la vida de la programación corporativa.

Durante años, las grandes empresas se han convencido de que la "red" corporativa es la arteria por donde fluye la sangre que mantiene vivo su negocio. Desde el gran servidor de sus oficinas centrales, hasta los servidores de las delegaciones, las estaciones de trabajo de los programadores y la marabunta de PCs, la información va fluyendo de unos a otros. Para muchas compañías, la Red es la Empresa.

Si esta red no se mantiene sana, los pedidos no llegan, el inventario no se actualiza, el software no se desarrolla adecuadamente, los clientes no están satisfechos y, fundamentalmente, el dinero no entra. La necesidad de diagnosticar y reducir la arterioesclerosis de la red, hace que se estén inyectando continuamente nuevas metodologías que subsanen este grave problema.

¿Es Java la medicina? Está claro que cuando vemos un cepillo animado limpiando los dientes, cubos moviéndose en 3-D, o una banda de gatos locos en applets de Java, nos convencemos de que es el lenguaje idóneo para Internet. Pero, qué pasa con las aplicaciones corporativas, ¿sería una buena tecnología allí donde la red es el punto crítico? Vamos a intentar responder comparando las capacidades de Java contra la lista de necesidades de la red corporativa.
Desarrollo rápido de aplicaciones

Hace años, se decía que los programadores pronto desaparecerían. Los generadores automáticos de programas, eliminarían a los generadores humanos y el mundo sería un lugar mejor para vivir. Desafortunadamente, quienes decían esto no tuvieron en cuenta una acelerada demanda de software de calidad para muy diferentes aplicaciones. Sin embargo, la tecnología de objetos pronto vino a intentar facilitar la tarea, adoptando el modelo de "generar parte de un programa", así, generando la parte básica de un programa (los objetos), se podría conectar con otras partes para proporcionar diferentes utilidades al usuario.

El lenguaje C++ es una buena herramienta, pero no cumple totalmente la premisa. Visual Basic y NextStep, se acercan cada vez más al poder de los objetos. Java facilita la creación de entornos de desarrollo-aplicaciones de modo similar, pero además es flexible, poderoso y efectivo. Los programadores ahora disponen de herramientas de programación de calidad beta, que apuntan hacia esa meta, como son el Java WorkShop de SunSoft, el entorno Java de Borland, el Café de Symantec, y pronto, herramientas más sofisticadas como Netcode o FutureTense. Esto proporciona una gran progresión a los entornos de desarrollo Java.
Aplicaciones efectivas y eficientes

Las aplicaciones que se crean en grandes empresas deben ser más efectivas que eficientes; es decir, conseguir que el programa funcione y el trabajo salga adelante es más importante que el que lo haga eficientemente. Esto no es una crítica, es una realidad de la programación corporativa. Al ser un lenguaje más simple que cualquiera de los que ahora están en el cajón de los programadores, Java permite a éstos concentrarse en la mecánica de la aplicación, en vez de pasarse horas y horas incorporando APIs para el control de las ventanas, controlando minuciosamente la memoria, sincronizando los ficheros de cabecera y corrigiendo los agónicos mensajes del linker. Java tiene su propio toolkit para interfaces, maneja por sí mismo la memoria que utilice la aplicación, no permite ficheros de cabecera separados (en aplicaciones puramente Java) y solamente usa enlace dinámico.

Muchas de las implementaciones de Java actuales son puros intérpretes. Los byte-codes son interpretados por el sistema run-time de Java, la Máquina Virtual Java (JVM), sobre el ordenador del usuario. Aunque ya hay ciertos proveedores que ofrecen compiladores nativos Just-In-Time (JIT). Si la Máquina Virtual Java dispone de un compilador instalado, las secciones (clases) del byte-code de la aplicación se compilarán hacia la arquitectura nativa del ordenador del usuario. Los programas Java en ese momento rivalizarán con el rendimiento de programas en C++. Los compiladores JIT no se utilizan en la forma tradicional de un compilador; los programadores no compilan y distribuyen binarios Java a los usuarios. La compilación JIT tiene lugar a partir del byte-code Java, en el sistema del usuario, como una parte (opcional) del entorno run-time local de Java.

Muchas veces, los programadores corporativos, ansiosos por exprimir al máximo la eficiencia de su aplicación, empiezan a hacerlo demasiado pronto en el ciclo de vida de la aplicación. Java permite algunas técnicas innovadoras de optimización. Por ejemplo, Java es inherentemente multithreaded, a la vez que ofrece posibilidades de multithread como la clase Thread y mecanismos muy sencillos de usar de sincronización; Java en sí utiliza threads. Los desarrolladores de compiladores inteligentes pueden utilizar esta característica de Java para lanzar un thread que compruebe la forma en que se está utilizando la aplicación. Más específicamente, este thread podría detectar qué métodos de una clase se están usando con más frecuencia e invocar a sucesivos niveles de optimización en tiempo de ejecución de la aplicación. Cuanto más tiempo esté corriendo la aplicación o el applet, los métodos estarán cada vez más optimizados (Guava de Softway es de este tipo).

Si un compilador JIT está embebido en el entorno run-time de Java, el programador no se preocupa de hacer que la aplicación se ejecute óptimamente. Siempre he pensado que en los Sistemas Operativos tendría que aplicarse esta filosofía; un optimizador progresivo es un paso más hacia esta idea.
Portabilidad para programador y programa

En una empresa de relativo tamaño hay una pléyade diferente de ordenadores. Probablemente nos encontremos con estaciones de trabajo Sun para el desarrollo de software, hordas de PCs para cada empleado, algún Mac en el departamento de documentación, una estación de trabajo HP en administración y una estación SGI en la sala de demos. Desarrollar aplicaciones corporativas para un grupo tan diferente de plataformas en excesivamente complejo y caro. Hasta ahora era complicado convencer a los programadores de cada arquitectura que utilizasen un API común para reducir el coste de las aplicaciones.

Con un entorno run-time de Java portado a cada una de las arquitecturas de las plataformas presentes en la empresa y una buena librería de clases ("packages" en Java), los programadores pueden entenderse y encontrar muy interesante trabajar con Java. Esta posibilidad hará tender a los programadores hacia Java, justo donde otros intentos anteriores con entornos universales (como Galaxy o XVT) han fracasado. Estos APIs eran simplemente inadecuados, no orientados a redes y, verdaderamente, pesados.

Una vez que los programas estén escritos en Java, otro lado interesante del asunto es que los programadores también son portables. El grupo de programadores de la empresa puede ahora enfrentarse a un desarrollo para cualquiera de las plataformas. La parte del cliente y del servidor de una aplicación estarán ahora escritas en el mismo lenguaje. Ya no será necesario tener un grupo que desarrolle en Solaris en del departamento de I+D, programadores trabajando sobre Visual Basic en el departamento de documentación y programadores sobre GNU en proyectos especiales; ahora todos ellos podrán estar juntos y formar el grupo de software de la empresa.

Costes de desarrollo


En contraste con el alto coste de los desarrollos realizados sobre estaciones de trabajo, el coste de creación de una aplicación Java es similar al de desarrollar sobre un PC.

Desarrollar utilizando un software caro para una estación de trabajo (ahora barata) es un problema en muchas empresas. La eficiencia del hardware y el poco coste de mantenimiento de una estación de trabajo Sun, por ejemplo, resulta muy atractivo para las empresas; pero el coste adicional del entorno de desarrollo con C++ es prohibitivo para la gran mayoría de ellas. La llegada de Java e Intranet reducen considerablemente estos costes. Las herramientas Java ya no están en el entorno de precios de millones de pesetas, sino a los niveles confortables de precio de las herramientas de PCs. Y con el crecimiento cada día mayor de la comunidad de desarrolladores de software freeware y shareware que incluso proporcionan el código fuente, los programadores corporativos tienen un amplio campo donde moverse y muchas oportunidades de aprender y muchos recursos a su disposición.

El éxito que Internet ha proporcionado a los equipos de software corporativos es un regalo. El precio del software es ahora el mismo para un poderoso equipo corriendo Unix que para un PC. Incluso Netscape tiene al mismo precio la versión Unix de su servidor Web SuiteSpot que la versión PC/NT. Esta es la filosofía de precios que parece ser será la que se siga con las herramientas basadas en Java.

Mantenimiento y soporte


Un problema bien conocido que ocurre con el software corporativo es la demanda de cuidados y realimentación. Java no es, ciertamente, la cura para la enfermedad del mantenimiento, pero tiene varias características que harán la vida del enfermero más fácil.

Uno de los componentes del JDK es javadoc. Si se usan ciertas convenciones en el código fuente Java (como comenzar un comentario con /** y terminarlo con */), javadoc se puede fácilmente generar páginas HTML con el contenido de esos comentarios, que pueden visualizarse en cualquier navegador. La documentación del API de Java ha sido creada de este modo. Esto hace que el trabajo de documentar el código de nuevas clases Java sea trivial.

Otro gran problema del desarrollador corporativo es la creación y control de makefiles. Leerse un makefile es como estar leyendo la historia de empresa. Normalmente se pasan de programador a programador, quitando la información que no es esencial, siempre que se puede. Esto hace que muchos de los makefiles de las aplicaciones contengan docenas de librerías, una miríada de ficheros de cabecera y ultra-confusos macros. Es como mirar en el estómago de la ballena de Jonás.

Java reduce las dependencia de complejos makefiles drásticamente. Primero, no hay ficheros de cabecera. Java necesita que todo el código fuente de una clase se encuentre en un solo fichero. Java tiene la inteligencia de make en el propio lenguaje para simplificar la compilación de byte-codes. Por ejemplo:

public class pepe { // Fichero: pepe.java Guitarra flamenca ; } public class guitarra { // Fichero: guitarra.java } % javac -verbose pepe.java [parsed pepe.java in 720ms] [loaded C:\JAVA\BIN\..\classes\java\lang\Object.class in 220ms] [checking class pepe] [parsed .\\Guitarra.java in 50ms] [wrote pepe.class] [checking class Guitarra] [wrote .\\Guitarra.class] [done in 2300ms]

 

El compilador Java se da cuenta de que necesita compilar el fichero guitarra.java. Ahora vamos a forzarlo a que recompile pepe.java sin cambiar guitarra.java, podremos comprobar que el compilador de byte-code Java no recompila innecesariamente el fichero guitarra.java.

% javac -verbose pepe.java [parsed pepe.java in 440ms] [loaded C:\JAVA\BIN\..\classes\java\lang\Object.class in 160ms] [checking class pepe] [loaded .\\Guitarra.java in 0ms] [wrote pepe.class] [done in 1860ms]

 

Ahora, si modificamos guitarra.java (añadiendo, por ejemplo, otro miembro a la clase) y compilamos pepe.java, el compilador Java se dará cuenta de que debe recompilar tanto pepe.java como guitarra.java

% javac -verbose pepe.java [parsed pepe.java in 710ms] [loaded C:\JAVA\BIN\..\classes\java\lang\Object.class in 220ms] [checking class pepe] [parsed .\\Guitarra.java in 0ms] [wrote pepe.class] [checking class Guitarra] [wrote .\\Guitarra.class] [done in 2640ms]

 

En el libro Just Java de Peter van der Linden hay un capítulo excelente acerca del compilador de Java, si tienes oportunidad, no dejes de leerlo.
Aprendizaje

Si la empresa está llena de programadores de >C++ con alguna experiencia en el manejo de librería gráficas, aprenderán rápidamente lo esencial de Java. Si el equipo de ingenieros no conoce C++, pero maneja cualquier otro lenguaje de programación orientada a objetos, les llevará pocas semanas dominar la base de Java. Lo que sí que no es cierto es que haya que aprender C++ antes de aprender Java.

Si los ingenieros de la empresa no conocen ningún lenguaje orientado a objetos, sí que tienen que aprender los fundamentos de esta tecnología antes de nada, y luego aplicarlos a la programación con Java. El análisis y diseño orientado a objetos debe ser comprendido antes de intentar nada con Java. Los programadores de Java sin un fondo de conocimientos de OOA/D producirán código pobre. Además, los libros sobre Java crecen como la espuma, ya hay más de 25 publicados, y si buscas "Progamming in Java" en la Red, encontrarás 312 Web sites, y 30 más dedicados a "Learning Java". Y si esto, evidentemente, no es el sustituto de un instructor humano, hay ya varias empresas que ofrecen enseñanza de Java, entre ellas, Sun.
Resumen

En base a los argumentos que acabamos de exponer, ¿podría una empresa utilizar Java para sus aplicaciones críticas? En este instante, sería suficiente un acercamiento a Java. Porque más importante que la elección de Java o cualquier otro lenguaje de programación es un buen diseño de la arquitectura de la aplicación. Diseñar la aplicación para que esté distribuida entre servidores y clientes, y la línea de partida debe ser el diseño modular.

Algunas sugerencias para adoptar Java como tecnología corporativa, serían:

  1. Usar Java en el desarrollo de la interface del cliente; Java es suficientemente estable para desarrollar una interface portable. Utilizar herramientas de programación más estables en los servidores, porque son la parte crítica.
  2. Portar o crear un servidor no-crítico en Java, de forma que tanto cliente como servidor estén escritos en Java.
  3. Utilizar Java en proyectos de envergadura tanto en el cliente como en el servidor, para valorar la efectividad de Java.

Intranet está creciendo actualmente más rápido que Internet. Las organizaciones corporativas están adoptando la metodología Internet para proporcionar soluciones a sus usuarios y clientes. Java tiene todas las cartas para ser una herramienta de inestimable valor en el desarrollo de aplicaciones corporativas.
Tabla de contenidos
  1. 1 - DECLARACIÓN DE INTENCIONES
  2. 2 - PRESENTACIÓN
  3. 3 - INTRODUCCIÓN A JAVA
  4. 4 - Origen de JAVA
  5. 5 - Características de JAVA
  6. 6 - HotJava
  7. 7 - JAVA para aplicaciones corporativas
  8. 8 - INSTALACIÓN DEL JDK
  9. 9 - Windows
  10. 10 - Solaris
  11. 11 - Linux
  12. 12 - Compilación sin JDK
  13. 13 - CONCEPTOS BÁSICOS DE JAVA
  14. 14 - Programación en JAVA
  15. 15 - Control del Flujo
  16. 16 - Clases
  17. 17 - Variables y Métodos de Instancia
  18. 18 - Alcance de Objetos y Reciclado de Memoria
  19. 19 - Herencia
  20. 20 - Control de Acceso
  21. 21 - Variables y Métodos Estaticos
  22. 22 - this y super
  23. 23 - Clases Abstractas
  24. 24 - Interfaces
  25. 25 - Métodos Nativos
  26. 26 - Paquetes
  27. 27 - Referencias
  28. 28 - Punteros y Referencias C
  29. 29 - Referencias en Java
  30. 30 - Referencias y Arrays
  31. 31 - Referencias y Listas
  32. 32 - Punteros C/C++ y Referencias Java
  33. 33 - PROGRAMAS BÁSICOS EN JAVA
  34. 34 - Una mínima aplicación en Java
  35. 35 - Compilación y Ejecución de HolaMundo
  36. 36 - El visor de Applets de Sun (appletviewer)
  37. 37 - Arquitectura de appletviewer
  38. 38 - Métodos de appletviewer
  39. 39 - Funciones de menú de appletviewer
  40. 40 - Un Applet basico en Java
  41. 41 - Compilación de un Applet
  42. 42 - La marca APPLET de html
  43. 43 - Atributos de APPLET
  44. 44 - Paso de parametros a Applets
  45. 45 - Tokens en parametros de llamada
  46. 46 - El parametro ARCHIVE
  47. 47 - Depuración general
  48. 48 - Ciclo de vida de un Applet
  49. 49 - Protección de Applets
  50. 50 - Escribir Applets Java
  51. 51 - La aplicación Fecha (Aproximación a OOP)
  52. 52 - EL DEPURADOR DE JAVA - JDB
  53. 53 - CLASES JAVA
  54. 54 - La clase Math
  55. 55 - La clase Character
  56. 56 - La clase Float
  57. 57 - La clase Double
  58. 58 - La clase Integer
  59. 59 - La clase Long
  60. 60 - La clase Boolean
  61. 61 - La clase String
  62. 62 - La clase StringBuffer
  63. 63 - Uso de Conversiones
  64. 64 - ABSTRACT WINDOW TOOLKIT (AWT)
  65. 65 - Interface de Usuario
  66. 66 - Estructura del AWT
  67. 67 - Componentes y Contenedores
  68. 68 - Tipos de Componentes
  69. 69 - BorderLayout
  70. 70 - CardLayout
  71. 71 - CheckboxGroup
  72. 72 - Color
  73. 73 - Component
  74. 74 - Button - Botones
  75. 75 - Canvas
  76. 76 - Checkbox
  77. 77 - Choice
  78. 78 - Container
  79. 79 - Label - Etiquetas
  80. 80 - List - Listas
  81. 81 - Scrollbar - Barras de desplazamiento
  82. 82 - TextComponent
  83. 83 - Fijar el tamaño preferido
  84. 84 - La clase Event
  85. 85 - FlowLayout
  86. 86 - Cambio de fuente de caracteres
  87. 87 - GridLayout
  88. 88 - GridBagLayout
  89. 89 - Uso de Insets
  90. 90 - MenuComponent
  91. 91 - LayoutManager
  92. 92 - Diseño de Componentes propios
  93. 93 - Creación de Aplicaciones con AWT
  94. 94 - Crear el Marco de la aplicación (Frame)
  95. 95 - Inicializar Fuentes, Colores, Layouts y demas recursos
  96. 96 - Crear menús y Barras de Menús
  97. 97 - Crear los controles, dialogos, ventanas, etc.
  98. 98 - Layouts
  1. 99 - FlowLayout
  2. 100 - BorderLayout
  3. 101 - GridLayout
  4. 102 - GridBagLayout
  5. 103 - CardLayout
  6. 104 - Crear un Layout propio
  7. 105 - Control de Eventos
  8. 106 - La clase Event
  9. 107 - Tipos de Eventos
  10. 108 - Generación y Propagación de Eventos
  11. 109 - Métodos de Control de Eventos
  12. 110 - Action_Event
  13. 111 - Mejorar el Diseño de Interfaces
  14. 112 - Cambio de Font de Caracteres
  15. 113 - Colores de Fondo y Texto
  16. 114 - Fijar el Tamaño Preferido
  17. 115 - Uso de Insets
  18. 116 - Habilitar y Deshabilitar Componentes
  19. 117 - Botón Grafico
  20. 118 - GRÁFICOS
  21. 119 - Métodos para Dibujos
  22. 120 - Líneas
  23. 121 - Rectangulos
  24. 122 - Círculos, Elipses
  25. 123 - EXCEPCIONES EN JAVA
  26. 124 - Funciones Graficas
  27. 125 - Manejo de Excepciones
  28. 126 - Fractales
  29. 127 - Generar Excepciones en Java
  30. 128 - Líneas Flotantes
  31. 129 - Excepciones Predefinidas
  32. 130 - Métodos para Imagenes
  33. 131 - Crear Excepciones Propias
  34. 132 - Doble Buffering de Graficos
  35. 133 - Capturar Excepciones
  36. 134 - Nuevas Clases para Dibujo
  37. 135 - Propagación de Excepciones
  38. 136 - La Clase MediaTracker
  39. 137 - THREADS Y MULTITHREADING
  40. 138 - Sonido en Java
  41. 139 - Flujo en Programas
  42. 140 - Entrada por Ratón
  43. 141 - Creación y Control de Threads
  44. 142 - Arrancar y Parar Threads
  45. 143 - Suspender y Reanudar Threads
  46. 144 - Estados de un Thread
  47. 145 - Scheduling
  48. 146 - Prioridades, demonios...
  49. 147 - Ejemplo de Animación
  50. 148 - Comunicación entre Threads
  51. 149 - MÉTODOS NATIVOS
  52. 150 - Escribir Código Java
  53. 151 - Compilar el Código Java
  54. 152 - Crear el fichero de Cabecera
  55. 153 - Crear el fichero de Stubs
  56. 154 - Escribir la función C
  57. 155 - Crear la Librería Dinamica
  58. 156 - Ejecutar el Programa
  59. 157 - ENTRADA / SALIDA ESTÁNDAR
  60. 158 - La clase System
  61. 159 - Clases comunes de Entrada/Salida
  62. 160 - FICHEROS EN JAVA
  63. 161 - Ficheros
  64. 162 - Streams de Entrada
  65. 163 - Streams de Salida
  66. 164 - Ficheros de Acceso Aleatorio
  67. 165 - COMUNICACIONES EN JAVA
  68. 166 - Comunicaciones en Unix
  69. 167 - Sockets
  70. 168 - Diferencias entre Sockets Stream y Datagrama
  71. 169 - Uso de Sockets
  72. 170 - Dominios de Comunicaciones
  73. 171 - Modelo de Comunicaciones con Java
  74. 172 - Apertura de Sockets
  75. 173 - Creación de Streams
  76. 174 - Cierre de Sockets
  77. 175 - Mínimo Cliente SMTP
  78. 176 - Servidor de Eco
  79. 177 - Cliente/Servidor TCP/IP
  80. 178 - Servidor Simple de HTTP
  81. 179 - Red en Windows '95 (sin conexión)
  82. 180 - Clases Útiles en Comunicaciones
  83. 181 - ARQUITECTURA MVC EN JAVA
  84. 182 - La Arquitectura MVC
  85. 183 - Observador y Observable
  86. 184 - Cómo utilizar Observer y Observable
  87. 185 - Ejemplo de aplicación MVC
  88. 186 - APLICACIONES EN JAVA
  89. 187 - Etiqueta
  90. 188 - Reloj Digital
  91. 189 - Persiana
  92. 190 - Solapas
  93. 191 - Transparencia
  94. 192 - Calculadora
  95. 193 - Cuenta-Kilómetros
  96. 194 - Cartel
  97. 195 - FINAL Y AGRADECIMIENTOS
  98. 196 - JAVA Y MATLAB
Autor y licencia de 'Tutorial de Java - JAVA para aplicaciones corporativas'
Agustín Froufe Extraído de: http://www.publispain.com/supertutoriales/

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Tutorial de Java - JAVA para aplicaciones corporativas'

Curso para aprender a realizar aplicaciones web en Java.
La idea es dar una guía ordenada para el estudio de este lenguaje, muy poderoso... Más »
Las universidades corporativas son organizaciones relativamente nuevas en el mercado de la educación. Ellas responden... Más »
Uno de los problemas de Java en Linux es que las aplicaciones programadas en esta... Más »
Si su programa es software libre, básicamente es ético--pero hay una trampa de la que... Más »
Gente Wiki
David Carhuamaca Zereceda
Ingeniero en estadística e informática con estudios y especialización en derechos humanos. He participado en cursos de entrenamiento profesional en...
Carlos Octavio Gonzalez
Lider de proyectos de implementación de sap. Conocimientos de los modulos wm, mm y sd.
Transporte
Hilario Rodríguez Cardozo
Soy biológo y me dedico a la docencia, estudie el posgrado de maestría en ciencia en biotecnología vegetal. Trabajo en...
Artur Filipe Dos Santos
Licenciado em comunicação social pela escola superior de jornalismo, mestrado em comunicação pela universidade de vigo, galiza, espanha e a...
Gabinetes de prensa, Periodismo,...
Doula Vottela E.
Empresario, y gerente general de trazag de colombia ltda. Empresa especializada en consultoría internacional y asesorias en bpa, bpm,...
Jorge Ignacio Córdova Valenzuela
Instructor de yoga, de pilates, practico meditación, estudio psicología.
Suscribirse
¿Estás seguro de que deseas eliminar este capítulo?