2010-04-10 20 views
6

Soy un programador principiante y el programa I & CS en nuestra escuela comienza con el aprendizaje de Java. Me parece que C y sus spin-offs son mucho más frecuentes en el mundo real. ¿Es esto cierto? ¿Cómo usan los programadores expertos Java para su trabajo?¿Cuáles son algunas aplicaciones destacadas del mundo real de Java?

Para ser más precisos, quiero saber en qué situaciones un programador preferiría usar Java sobre otros lenguajes. OpenOffice es definitivamente un ejemplo destacado de Java, pero ¿no podría haber sido codificado usando cualquier otra cosa?

+3

OpenOffice está escrito principalmente en C++. Vea aquí: http://wiki.services.openoffice.org/wiki/Java_and_OpenOffice.org – missingfaktor

+2

@Leebuntu: * Aplicaciones destacadas del mundo real de Java? * [Sic] OK, voy a morder, en algunos dominios totalmente no relacionados : Google. El GMail de Google (GWT, el convertidor de Java a JavaScript fue creado para escribir GMail) y GMail es posiblemente uno de los Webapp más avanzados. Google es una empresa tecnológica con una capitalización de mercado de $ 180bn que es * alta * en Java (Android). Las especificaciones BluRay (Java es una parte oficial y obligatoria del estándar BluRay). El mundo de la banca está gobernado por Java. Java SmartCards donde países enteros los están utilizando para su sistema de atención médica. Eso es solo unos pocos. – SyntaxT3rr0r

Respuesta

12

A menos que esté escribiendo juegos, software de dispositivos integrados, manteniendo el software heredado o escribiendo software de cálculo en paralelo de alto rendimiento (por ejemplo, CUDA), obtendrá mucho más rendimiento de Java en estos días que C/C++. C# es en realidad más derivada de Java que C-derived a pesar del nombre, en caso de que esté pensando en eso (muchos argumentarían que es mejor que Java, incluido yo mismo).

La afirmación de que "Java es más lento que C/C++" se está convirtiendo lenta pero constantemente en un mito (véase, por ejemplo, this benchmark). Ciertamente es mucho más amigable con los programadores, y cada vez surgen más y más soluciones de nivel empresarial que tratan específicamente con Java, su desarrollo y su implementación en el mundo real.

Particularmente en aplicaciones de servidor, encontrará que Java está ganando terreno enorme. En la mayoría de los campos en este punto, es discutible si realmente ocupa el segundo lugar con respecto al uso de C/C++.

+0

¡Muchas gracias por su respuesta! Definitivamente me dio una perspectiva de lo que estoy aprendiendo. A menudo siento que estoy conduciendo en la niebla ... Creo que trataré de familiarizarme con C. –

+0

Debo aclarar que C todavía es bueno saberlo. Si no es parte del plan de estudios de su escuela, definitivamente me tomaría un tiempo para aprender al menos los conceptos básicos. Saber de dónde venimos y saber cuáles son las partes de bajo nivel da una enorme perspectiva sobre cómo hacer las cosas bien. Pero, Java por sí solo es una herramienta poderosa y de uso frecuente. –

+1

Java definitivamente no está "ganando terreno enorme" en ningún lado; esa declaración fue verdadera hace 10 años. Hoy en día, Java * está perdiendo terreno ante idiomas como Python y Ruby. –

3

Hay toneladas de aplicaciones JAVA por ahí. Tal vez no tanto en el escritorio estándar de Windows, pero en mainframes, etc., Java se usa mucho. Además, muchos sitios aún usan jsp, etc. Java es un lenguaje muy relevante, y probablemente seguirá siéndolo. (Aunque, personalmente, preferiría usar .NET.)

En nuestra empresa, utilizamos Confluence como un sistema de gestión de contenido para la documentación, MAXIMO como un software de seguimiento de activos ... ambos se ejecutan en Java. La mayoría de las aplicaciones web internas que tenemos que interactúan directamente con el mainframe se ejecutan en JSP. Para equipos de sobremesa, probablemente el más notable de Java aplicación es Open Office ...

Además, Java es un lenguaje relativamente agradable para el aprendizaje de la programación orientada a objetos. Mucho de lo que aprendes en Java se puede transferir fácilmente a otros lenguajes de OO (como C#, VB.Net, C++, etc.). Es mucho más fácil de aprender que C++, por lo que es un buen lenguaje de "aprendizaje". (Todavía creo que C# es más fácil, pero eso es probablemente un sesgo personal.)

-1

¿Cómo? Abro mi editor, juro por Java por ser tan detallado y de bajo nivel (pero no tan bajo como C!), Y luego empiezo a escribir.

A excepción de ligeras variaciones en el paso 2, es prácticamente igual para todos los idiomas que uso para el trabajo.

+0

a excepción de un tiempo de ejecución completamente diferente ... –

4

Java es quizás el segundo lugar en uso para los lenguajes más cercanos basados ​​en C, pero es un segundo lo suficientemente cerca como para no preocuparme demasiado por su aplicabilidad. En términos más generales, no me preocuparía demasiado acerca de la aplicabilidad del primer idioma que aprende; hay tantos idiomas, cada uno con su dominio particular. Concéntrese en aprender conceptos y no le resultará difícil cambiar a cualquier idioma que sea apropiado para la tarea actual.

En cuanto a Java "s dominio del problema:
Java se utiliza a menudo para aplicaciones multiplataforma con una interfaz gráfica de usuario, para aplicaciones de teléfonos celulares, y en el servidor para generar páginas web El código que ya se ha escrito en. java en estas áreas es lo que lo hace atractivo para futuros proyectos en estas áreas - pero sin dominio del problema pertenece explícitamente a un idioma

Conseguir un poco técnico:.
Java es un de tipo estático y basura recogida idioma Esto significa que es un poco más difícil de accid En lugar de hacer cosas inseguras, Integrated Development Environments (como Eclipse) puede proporcionar más ayuda al programador, por lo que Java es quizás más adecuado para proyectos más grandes o proyectos que probablemente tengan programadores no familiarizados con la base de código.

Como lenguaje recogido de basura, Java es quizás menos adecuado para programas con restricciones de recursos o requisitos de velocidad (donde generalmente se prefiere C). Como un lenguaje estáticamente tipado, es menos adecuado para el desarrollo rápido de aplicaciones (donde los lenguajes de tipado dinámico como Python, Ruby y PHP son generalmente preferidos).

En términos más generales, Java es también una lenguaje imperativo, por lo que su estilo es más familiar para la mayoría de los programadores, y es mejor para decirle al ordenador exactamente cómo hacer algo, a diferencia de, por ejemplo, lenguajes funcionales (como Haskell), que puede ser mejor para describir lo que se debe hacer, para que la computadora pueda dividir el trabajo según lo necesite (pero no para tratar las cosas que cambian, como lo que aparece en la pantalla) .

+0

+ 1 para "No me preocuparía demasiado acerca de la aplicabilidad del primer idioma que aprende" – David

7

Java es bastante frecuente. Es realmente difícil comparar su prevalencia con "C y sus spin-offs" porque nadie guarda estadísticas sobre cuántos problemas del "mundo real" se resuelven con cada uno. Java, sin embargo, es bastante popular. Algunas aplicaciones Java que se pueden instalar y jugar en su propia máquina de escritorio:

Java también se ejecuta en muchas teléfonos celulares y servidores web.

En cuanto a su segunda pregunta, los programadores expertos tienden a usar Java para hacer las cosas. (Al igual que C, C++, perl, Lua, python, Javascript, ruby, Clojure, Pascal, SQL, COBOL y cualquier otro lenguaje de programación). Como programador principiante, no se preocupe por la aplicabilidad en el mundo real de Java. Si su escuela lo enseña, úselo para aprender los conceptos de ciencias de la computación que le servirán en el idioma que termine utilizando para resolver programas prevalentes del mundo real.

+0

Sí, algunos de mis amigos programadores dicen que no se preocupe por el idioma solo concéntrese en el concepto, eventualmente escribir en diferentes idiomas será solo cuestión de aprender la sintaxis. ¡Gracias! –

+2

@Leebuntu: Aprender un idioma NO es solo cuestión de aprender la sintaxis. Intente aprender algo como Haskell o Lisp y se dará cuenta de cuán equivocada es su suposición. – missingfaktor

+1

@Rahul +1 Tan cierto, como alguien dijo que no se trata de la sintaxis, se trata de la filosofía del lenguaje. – helpermethod

-3

¿Te refieres a las aplicaciones prominentes a las que te enfrentas como miembro general del público? No hay muchos, solo puedo pensar en Frostwire por uno. No significa que su presencia no esté allí, antes de comenzar mi carrera de programación nunca había oído hablar de Oracle, aunque ahora es tan grande como la compañía de Coca Cola.

+1

"No hay muchos". Hay miles. Considera los sitios web. Considera amazon.com para empezar. – EJP

9

Su percepción del "mundo real" quizás no sea precisa porque muchas (¿la mayoría?) Grandes aplicaciones de Java no son "visibles". Claro, hay aplicaciones Java de escritorio pero, en mi opinión, es Java en el servidor lo que lo hizo tan popular, especialmente en entornos corporativos heterogéneos (la portabilidad le brinda independencia del proveedor) y Java se usa en casi todas las industrias. Y porque pidió un ejemplo, el mío sería GMail. ¿Eso es lo suficientemente grande?

+0

"Python en Google" ?? estamos hablando de Java aquí. – Zaki

+0

Entendido, gracias. – Zaki

3

Razones para elegir Java específicamente:

  • La aplicación debe ejecutarse en múltiples sistemas operativos - Java hace esto más fácil que la mayoría de otros idiomas
  • Usted está planeando utilizar uno de la enorme cantidad de bibliotecas que está disponible en Java
  • ¿quieres ser capaz de encontrar a los desarrolladores para su proyecto fácil

Además, hay dos conceptos erróneos en su pregunta:

  • Java es un spin-off de C. Su sintaxis y los conceptos están más cerca de C y C++ que la mayoría de las lenguas modernas.
  • OpenOffice no está escrito completamente en Java. Algunas partes pequeñas sí lo son, pero la mayor parte es C++
+2

Java no es un spin-off de C. Roba la sintaxis para que sea más fácil de aprender para los programadores C, pero es un lenguaje completamente diferente. –

+1

@ Thorbjørn: ¿qué considerarías como un "verdadero" spin-off de C que * no * es un idioma completamente diferente? –

+0

Depende. Creo que el punto crucial es si tienes punteros que se pueden manipular o no. –

2

Mi uso personal de Java ha sido en teléfonos celulares. Transmití una aplicación a Android y BlackBerry. Entonces, para el uso públicamente visible en el mundo real, esos sistemas operativos y sus innumerables aplicaciones son buenos ejemplos.

Cuanto más trabajo con Java, menos me gusta. Eso es, en parte, las herramientas de desarrollo (Eclipse), en parte la plataforma de destino y, en parte, el lenguaje en sí. Java es un buen primer idioma, pero en algún momento espero que intentes con otros para ver lo que te estás perdiendo.

+2

Personalmente, he encontrado que Eclipse + Java es realmente agradable de trabajar. Mucho mejor que cualquier C++ IDE que he usado. –

+1

@drawnonward, es un hecho bien establecido que todos los idiomas apestan. –

+0

Sí, hay algo que no le agrada en cada idioma y entorno. Con Java en dispositivos móviles, he encontrado más frustraciones diarias que con cualquier otra cosa, excepto la codificación de múltiples navegadores web. – drawnonward

6

He sido programador de C/C++ para siempre, pero recientemente comencé a usar Java mientras escribo aplicaciones web usando el genial Google Web Toolkit (GWT). Esta pequeña gema compilará su código java a Javascript y, si también escribe el código del servidor en Java, puede simplificar radicalmente la comunicación entre el cliente y el servidor. He escrito webapps en PHP y Python antes, con javascript en bruto o jQuery, pero para mí el combo GWT + Java es una solución mucho más agradable.

De acuerdo, no es el uso más popular de Java, pero pensé que podría estar interesado en conocer usos alternativos del idioma.

1

"C spin offs" no son tan útiles como parece cuando se tiene en cuenta el mundo de los negocios (a menos que consideres que Java es un spin-off, lo cual creo que definitivamente deberías).

Si desea obtener un trabajo bien pagado en Desarrollo de TI (consulte las ofertas de trabajo), Java es actualmente el idioma que debe conocer (no segundo, ni siquiera cerca, a menos que combine todas las alternativas, pero eso significa poco).

J2EE (desarrollo web, desarrollo de nivel medio del servidor) es donde domina Java. Desafortunadamente, esto no es algo que probablemente aprenderá, o incluso hablará, en la universidad (la mayoría de los profesores no conocen J2EE, de todos modos). Java también funciona bien en situaciones donde necesita integración con alguna tecnología, base de datos o software. Por supuesto, es multiplataforma (si está codificado correctamente). También ofrece más opciones (abrumadoramente) y soporte para desarrolladores que la mayoría (si no todas) las alternativas.

Las aplicaciones J2EE no parecen "comunes" porque generalmente están ocultas dentro de redes internas corporativas o gubernamentales, o se usan en servidores web que obviamente nunca verás.

3

La razón por la cual muchas empresas comerciales usan Java (y lenguajes de alto nivel similares) es que les facilita la escritura de aplicaciones complejas, robustas y relativamente eficientes que son mantenibles a largo plazo.Con C o C++, las aplicaciones a gran escala del mismo nivel de complejidad requieren más esfuerzo (años de desarrollador). El software también tiende a ser más frágil porque los programadores con habilidades promedio cometen más errores en C/C++ que en Java (et al), y esos errores tienden a ser más insidiosos (por ejemplo, saturaciones de búfer) y tener consecuencias más graves.

Se afirma que C/C++ es más eficiente que Java y otros lenguajes administrados. Si bien esto es cierto para algunas aplicaciones pequeñas (líneas de código), es bastante difícil de demostrar para aplicaciones grandes (por ejemplo, 100k + SLOC) ... porque nadie escribe dichas aplicaciones en el mismo diseño en varios idiomas.

Además, en la mayoría de los tipos de software, la velocidad de una aplicación es menos importante que cosas como el costo de desarrollo, el costo de mantenimiento, la fiabilidad del sistema, etc. A menudo, el único criterio de rendimiento difícil es que el software se ejecuta lo suficientemente rápido como para ser tolerable. A muchos programadores jóvenes les resulta difícil de entender y difícil de aceptar, pero las personas que pagan nuestros sueldos piensan en estas cosas de manera diferente ...

Cuestiones relacionadas