Primeramente cabe aclarar que:
"Java" fue desarrollado por Sun Microsystem's y es un lenguaje de programación orientado a objetos que es capaz de generar aplicaciones independientes ("StandAlone Applications"), y puede ser utilizado en Aplicaciones en Servidor ("Server-Side") así como en Aplicaciones en Cliente ("Client Side") , y otra gran gamma de aplicaciones.
Mientras que JavaScript fue desarrollado por Netscape , para dar mayor flexibilidad al lenguaje HTML , JavaScript generalmente es utilizado para Aplicaciones en Cliente ("Client Side") , aunque cabe mencionar que existe la posibilidad de degenerar aplicaciones en Servidor ("Server-Side") mediante "SuiteSpot", pero debido a que ya que existen métodos más eficientes y fáciles de utilizar para Aplicaciones de Servidor ,su uso queda limitado a Aplicaciones de Cliente.
Esta es alguna de la Terminología utilizada en Java, lo cual demuestra el amplio alcance que tiene este lenguaje.
Applet : Un applet es un programa que genera una ventana adicional dentro de su "Netscape Navigator" o "Internet Explorer" , esta ventana puede componerse de menús,sonido o imágenes. Otro terminología que casi siempre va en conjunción con un Applet es : AWT (Abstract Window Toolkit) y "SWING", ambas son API's ("Programming Interface") utilizados para formar Applets.
Java APIs : Forman la base para programar en el lenguaje Java, estas clases se encuentran divididas por paquetes ("packages") que serian el Análogo de "Librerías en C". AWT ("Abstract Windows Toolkit") mencionado anteriormente es uno de los paquetes del API Java
Java Beans : Esta arquitectura permite una manera de re-utilizar componentes de software que pueden ser manipulados en herramientas de desarrollo("Builder Tools"). Estos "Beans" pueden ser tan sencillos como un botón,o complejos como el acceso a una base de datos; una característica primordial de un JavaBean son los métodos (funciones) get|set
JFC "Java Foundation Classes" : Forman parte del API Java , y son un juego de componentes para generar una interfase gráfica (GUI) y otros servicios que simplifican el desarrollo de aplicaciones en el Cliente ("Client Side") para Intranets e Internet.
JNI "Java Native Interface" : Esto permite que código escrito en Java sea capaz de interactuar con aplicaciones escritas en C, C++.
JSP "Java Server Pages" : Este es un tipo de programa Java que contiene HTML, para ejecutar un JSP se requiere de un servlet engine como : Tomcat o bien un java application server como Websphere de IBM que son capaces de ejecutar un "Java Server Pages".
JVM ("Java Virtual Machine"): Este componente de Java es el ingrediente principal del logo "Write Once, Run Everywhere", cada plataforma o Sistema Operativo (Oracle,Windows,Linux,etc) debe desarrollar un "Virtual Machine", esto otorga un nivel de abstracción entre los programas escritos en Java y las diferentes plataformas, lo cual garantiza que toda aplicación escrita en Java logre ser ejecutada en todo tipo de Plataforma que soporte un "Java Virtual Machine".
Esto en contraste con programas escritos en C y C++ en los que era necesario modificar el código fuente ("Source Code") para que el programa ejecutara en diferentes plataformas. Lo que interpreta un JVM "Virtual Machine" es Byte Code, el cual es generado al compilar cualquier programa en Java. Este Byte Code será idéntico si es producido en un ambiente Windows,Solaris,Linux..etc y como ya fue mencionado: a través del JVM para cada plataforma se producen los mismos resultados.
JDBC : JDBC es un API que permite la ejecución de SQL (Structured Query Language) (lenguaje que utilizan las bases de datos ). Con este API es posible accesar casi toda fuente de Información desde Bases de Datos, Hojas de Cálculo hasta archivos comunes("flat files")
JDK o SDK: JDK es el ambiente en el cual es posible desarrollar cualquier aplicación Java. Este ambiente o paquete incluye: El API de Java, el compilador de Java, así como el JVM "Java Virtual Machine" de la plataforma correspondiente.NOTA: La última versión de JDK a esta fecha es JDK1.4, sin embargo, esto también es denominado "Java 2 Platform"(J2SE) e inclusive SDK ("Standard Development Kit")
JINI : Esta Tecnología permite la comunicación en Red desde aparatos domésticos(Refrigeradores,Hornos y otros dispositivos) hasta Sistemas Empresariales(Sun E10000, S80 de IBM ,etc), su gran ventaja ? Esta arquitectura permite que cada servicio (aparato o software) pueda comunicarse entre sí, PERO sin necesidad de administración humana.
RMI "Remote Method Invocation : Al igual que Jini, RMI permite que aplicaciones en Java se comuniquen a través de Red, las aplicaciones pueden ejecutarse en computadoras en lados opuestos del mundo,PERO esto se logra mediante el Protocolo GIOP "General Inter Orb Protocol", aunque se utiliza IIOP, mejor conocido como "Inter Orb Protocol" que es una variación de GIOP operado bajo el protocolo TCP/IP .
Servlet : Un servlet generalmente es utilizado para procesar formas (requisiciones de usuarios),verificar ("authenticate") usuarios, generar contenido dinámico; es muy similar a un JSP, inclusive un JSP se convierte eventualmente en un Servlet, la diferencia es que un Servlet solo contiene lenguaje Java desde el inicio, mientras que un JSP contiene Java y HTML.
Estas son solo algunas de las Tecnologías en Java. Si desea saber más visite java.sun.com
Si, el lenguaje se llama C# y es desarrollado por Microsoft, inclusive su estructura ("syntax") es muy similar a Java. C# es parte de la iniciativa .NET de Microsoft,pero en si .NET es rival de J2EE mas no directamente del lenguaje Java.
Al nivel de lenguaje:C# vs. Java además de las similitudes en estructura ("syntax") poseen un ambiente de ejecución similar: en Java a través de un JVM "Java Virtual Machine" y en C# a través del denominado CLR "Common Language Runtime"; de la misma manera que el lenguaje "Java" genera ByteCode para lograr interoperabilidad de plataforma y ejecutarlo en un JVM, en C# se genera MSIL o IL "Microsoft Intermediate Language" para ejecutarlo en el CLR "Common Language Runtime".
A través del proyecto .NET se pretende generar MSIL para TODO tipo de lenguaje (inclusive Java), esto es, se puede desarrollar una aplicación en varios lenguajes y todos estos interoperar una vez convertidos a MSIL, obviamente el poder mezclar varios lenguajes en un solo programa | aplicación es algo sin precedente, Microsoft pretende lograr la interoperabilidad ofrecida por Java (a través de MSIL) y llevarla acabo para todo lenguaje.
Al gran consorcio de empresas (principalmente Sun Microsystem's su creador ) que apoyan Java les ha llevado poco más de 5 años y millones de dolares no solo desarrollar varios "JVM" estables sino lograr la aceptación en la industria, desde un punto de vista técnico estos proyectos han girado alrededor de solo un lenguaje:Java.
Microsoft seguramente tiene los fondos necesarios para un proyecto de esta magnitud,pero será posible desarrollar una solución eficientemente técnica para lograr la interoperabilidad de diversos lenguajes ?
Sin duda los proyectos .NET | C# y J2EE | Java serán los dos mayores contendientes en todo sistema de computo en la próxima década.
Ya se ha iniciado una alternativa Open-Source para .NET los proyectos son denominados: Mono y DotGNU, y es un latino quien encabeza la iniciativa : http://www.go-mono.com .
Links: