Capitulos de este wiki
  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. 23 Clases Abstractas
  23. 24 Interfaces
  24. 25 Métodos Nativos
  25. 26 Paquetes
  26. 27 Referencias
  27. 28 Punteros y Referencias C
  28. 29 Referencias en Java
  29. 30 Referencias y Arrays
  30. 31 Referencias y Listas
  31. 32 Punteros C/C++ y Referencias Java
  32. 33 Programas básicos en java
  33. 34 Una mínima aplicación en Java
  34. 35 Compilación y Ejecución de HolaMundo
  35. 36 El visor de Applets de Sun (appletviewer)
  36. 37 Arquitectura de appletviewer
  37. 38 Métodos de appletviewer
  38. 39 Funciones de menú de appletviewer
  39. 40 Un Applet basico en Java
  40. 41 Compilación de un Applet
  41. 42 La marca APPLET de html
  42. 43 Atributos de APPLET
  43. 44 Paso de parametros a Applets
  44. 45 Tokens en parametros de llamada
  45. 46 El parametro ARCHIVE
  46. 47 Depuración general
  47. 48 Ciclo de vida de un Applet
  48. 49 Protección de Applets
  49. 50 Escribir Applets Java
  50. 51 La aplicación Fecha (Aproximación a OOP)
  51. 52 El depurador de java - jdb
  52. 54 La clase Math
  53. 55 La clase Character
  54. 56 La clase Float
  55. 57 La clase Double
  56. 58 La clase Integer
  57. 59 La clase Long
  58. 60 La clase Boolean
  59. 61 La clase String
  60. 62 La clase StringBuffer
  61. 63 Uso de Conversiones
  62. 64 Abstract window toolkit (awt)
  63. 65 Interface de Usuario
  64. 66 Estructura del AWT
  65. 67 Componentes y Contenedores
  66. 68 Tipos de Componentes
  67. 69 BorderLayout
  68. 70 CardLayout
  69. 71 CheckboxGroup
  70. 72 Color
  71. 73 Component
  72. 74 Button - Botones
  73. 75 Canvas
  74. 76 Checkbox
  75. 77 Choice
  76. 78 Container
  77. 79 Label - Etiquetas
  78. 80 List - Listas
  79. 81 Scrollbar - Barras de desplazamiento
  80. 82 TextComponent
  81. 83 Fijar el tamaño preferido
  82. 84 La clase Event
  83. 85 FlowLayout
  84. 86 Cambio de fuente de caracteres
  85. 87 GridLayout
  86. 88 GridBagLayout
  87. 89 Uso de Insets
  88. 90 MenuComponent
  89. 91 LayoutManager
  90. 92 Diseño de Componentes propios
  91. 93 Creación de Aplicaciones con AWT
  92. 94 Crear el Marco de la aplicación (Frame)
  93. 95 Inicializar Fuentes, Colores, Layouts y demas recursos
  94. 96 Crear menús y Barras de Menús
  95. 97 Crear los controles, dialogos, ventanas, etc.
  96. 98 Layouts
  97. 99 FlowLayout
  98. 100 BorderLayout
  99. 101 GridLayout
  100. 102 GridBagLayout
  101. 103 CardLayout
  102. 104 Crear un Layout propio
  103. 105 Control de Eventos
  104. 106 La clase Event
  105. 107 Tipos de Eventos
  106. 108 Generación y Propagación de Eventos
  107. 109 Métodos de Control de Eventos
  108. 110 Action_Event
  109. 111 Mejorar el Diseño de Interfaces
  110. 112 Cambio de Font de Caracteres
  111. 113 Colores de Fondo y Texto
  112. 114 Fijar el Tamaño Preferido
  113. 115 Uso de Insets
  114. 116 Habilitar y Deshabilitar Componentes
  115. 117 Botón Grafico
  116. 118 Gráficos
  117. 119 Métodos para Dibujos
  118. 120 Líneas
  119. 121 Rectangulos
  120. 122 Círculos, Elipses
  121. 123 Excepciones en java
  122. 124 Funciones Graficas
  123. 125 Manejo de Excepciones
  124. 126 Fractales
  125. 127 Generar Excepciones en Java
  126. 128 Líneas Flotantes
  127. 129 Excepciones Predefinidas
  128. 130 Métodos para Imagenes
  129. 131 Crear Excepciones Propias
  130. 132 Doble Buffering de Graficos
  131. 133 Capturar Excepciones
  132. 134 Nuevas Clases para Dibujo
  133. 135 Propagación de Excepciones
  134. 136 La Clase MediaTracker
  135. 137 Threads y multithreading
  136. 138 Sonido en Java
  137. 139 Flujo en Programas
  138. 140 Entrada por Ratón
  139. 141 Creación y Control de Threads
  140. 142 Arrancar y Parar Threads
  141. 143 Suspender y Reanudar Threads
  142. 144 Estados de un Thread
  143. 145 Scheduling
  144. 146 Prioridades, demonios...
  145. 147 Ejemplo de Animación
  146. 148 Comunicación entre Threads
  147. 149 Métodos nativos
  148. 150 Escribir Código Java
  149. 151 Compilar el Código Java
  150. 152 Crear el fichero de Cabecera
  151. 153 Crear el fichero de Stubs
  152. 154 Escribir la función C
  153. 155 Crear la Librería Dinamica
  154. 156 Ejecutar el Programa
  155. 157 Entrada / salida estándar
  156. 158 La clase System
  157. 159 Clases comunes de Entrada/Salida
  158. 160 Ficheros en java
  159. 161 Ficheros
  160. 162 Streams de Entrada
  161. 163 Streams de Salida
  162. 164 Ficheros de Acceso Aleatorio
  163. 165 Comunicaciones en java
  164. 166 Comunicaciones en Unix
  165. 167 Sockets
  166. 168 Diferencias entre Sockets Stream y Datagrama
  167. 169 Uso de Sockets
  168. 170 Dominios de Comunicaciones
  169. 171 Modelo de Comunicaciones con Java
  170. 172 Apertura de Sockets
  171. 173 Creación de Streams
  172. 174 Cierre de Sockets
  173. 175 Mínimo Cliente SMTP
  174. 176 Servidor de Eco
  175. 177 Cliente/Servidor TCP/IP
  176. 178 Servidor Simple de HTTP
  177. 179 Red en Windows '95 (sin conexión)
  178. 180 Clases Útiles en Comunicaciones
  179. 181 Arquitectura mvc en java
  180. 182 La Arquitectura MVC
  181. 183 Observador y Observable
  182. 184 Cómo utilizar Observer y Observable
  183. 185 Ejemplo de aplicación MVC
  184. 186 Aplicaciones en java
  185. 187 Etiqueta
  186. 188 Reloj Digital
  187. 189 Persiana
  188. 190 Solapas
  189. 191 Transparencia
  190. 192 Calculadora
  191. 193 Cuenta-Kilómetros
  192. 194 Cartel
  193. 195 Final y agradecimientos
  194. 196 Java y matlab

Tutorial de Java - JAVA para aplicaciones corporativas

7 - JAVA para aplicaciones corporativas

[editar]
Tutorial creado por Agustín Froufe. Extraido de: http://www.publispain.com/supertutoriales/
30 de Noviembre de 1999
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.
[editar]

165 opiniones

Desarrollo

me gustarias que explicara mas el metodo protected pues me parece muy util para no utilizar solo private ¿ o es depende la intencion a utilizar?
wey

no me sirve
programacion

me gusta sus comentarios son muy buenos
tyhgh

67uyuiufr4dfcrc4seuygyry5iyuy
Genial

ESTUPENDO!
1 2 3 4 5 6 7 ... 33 | siguiente >

Tutoriales relacionados con 'Tutorial de Java'

PHP se ha convertido en el lenguaje de facto de Internet y no es difícil... Más »
Este es el diario de Peter Class sobre sus dias aprendizaje de una disciplina de... Más »
Entiendase que AJAX no se refiere a usar el objeto XMLHttpRequest de manera indispensable porque... Más »
ASP (Active Server Pages) es la tecnología para la creación de páginas dinámicas del lado... Más »
Este documento contiene información acerca del establecimiento de servicios WWW bajo Linux (tanto servidor como... Más »

Autor y licencia de 'Tutorial de Java'


Tutorial de Agustín Froufe. Extraido de: http://www.publispain.com/supertutoriales/ CopyLeft
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.