Hace 14 años | Por techjb a sidelab.wordpress.com
Publicado hace 14 años por techjb a sidelab.wordpress.com

Como supongo que todos sabréis, Oracle ha demandado a Google por usar Java en Android. En este post me gustaría exponer las implicaciones que esto tiene para los millones de desarrolladores Java que hay en el mundo.

Comentarios

D

Brillante post.

D

No entiendo el por qué existiendo python, la gente sigue haciendo el gilipollas con java.

D

#2 porque en muchas aplicaciones web aún se usa java y sus applets....( y si, prefiero mil veces python)

D

#4 Porque fueron unos torpes y no eligieron el lenguaje adecuado.

AlphaFreak

#2 Si no entiendes eso quizás deberías dedicarte a otra cosa

#4 Applets, muy poquitas. Pero java en el lado servidor, a porrillo.

D

#13 sep, en el lado del servidor a puñaos... incluso algunos aún usan la versión 1.4 ( dos años y medio trabajando en eso...)

D

#8 Para ser fanboy de python te faltan algunas cosas por decir:

Con respecto al tipado: los dos son fuertemente tipados, lo que significa que todos los objetos tienen un tipo específico siempre. Que tipado sea dinámico, no es más que una ventaja, ya que ofrece mayor introspección.

Con respecto a OOP: Python permite realizar una orientación a objetos perfecta, soporta herencia y define perfectamente los miembros públicos, progegidos (weak private "_") y privados (strong private "__"). Otra cosa es que además permite flexibilidad (al estilo c++) para poder salirte de la encapsulación.

#12 A ver si te enteras tú también, que te veo flojito:
JIT: Python tiene JIT: http://psyco.sourceforge.net/

kolme

#16 Ejem,

Con respecto al tipado:
>>> a = 5
>>> a
5
>>> a = "hola"
>>> a
'hola'
The object-oriented programming languages Smalltalk, Ruby, Python and Self are all "strongly typed" in the sense that typing errors are prevented at runtime, but these languages make no use of static type checking: the compiler does not check or enforce type constraint rules. (De la wikipedia)

Con respecto a OOP
No solo soporta herencia, sino que encima soporta herencia múltiple (al contrario que Java). De todas formas, Python no fue concebido desde el principio como un lenguaje orientado a objectos. Por eso tiene cosas extrañas, como tener que poner por narices el argumento "self" en los metodos de las clases. Y por eso su API es más bien desordenada, para no perder la compatibilidad hacia atrás. Lo que nos lleva a...

APIs
Son más bien desordenadas, hay un montón de metodos globales y métodos "huerfanos" almacenados en módulos. Un lenguaje PURAMENTE orientado a objectos como Java siempre va a preferir
myVector->size();
a:
len(myList)
Y Python tiene un montón de ejemplos similares de usar funciones globales (y más bien típicas de un lenguaje procedural), como también le pasa a PHP. Bueno, no es un caso tan grave como PHP.

Sobre el JIT
Python ya cuenta de serie con JIT. Puedes ver los ficherillos .pyc que se generan al ejecutar un script medianamente grande. A parte de eso, existen otras implementaciones de python, como psyco y iron python, que aseguran ser más eficientes (pero en realidad depende del caso).

Sobre la compañía
Google contrató a Guido, el creador de python, y básicamente deciden lo que hacen con el lenguaje.

D

#18 Sobre el JIT
Python ya cuenta de serie con JIT. Puedes ver los ficherillos .pyc que se generan al ejecutar un script medianamente grande. A parte de eso, existen otras implementaciones de python, como psyco y iron python, que aseguran ser más eficientes (pero en realidad depende del caso).

Eso no es JIT como el de Java. Explicación:
- ¿Qué hace Java(JVM más bien)? En tiempo de ejecución genera codigo máquina a partir de un bytecode.
- ¿Qué hace Python(salvo que uses pysco)? En tiempo de ejecución genera bytecode a partir de un código fuente.

D

#8 Python no tiene JIT(compilación a código nativo en tiempo de ejecución), tiene otra sigla GIL Great Interpreter Lock. Es decir que el multihilo de Python es de pega(no permite ejecutar varias cosas a la vez), mientras que el de java es de verdad. Python no es un reemplazo a Java.

véase http://docs.python.org/c-api/init.html Thread State and the Global Interpreter Lock

D

#12 JIT: Python tiene JIT
Psyco is a Python extension module which can greatly speed up the execution of any Python code.

No forma parte de la distribución oficial.
Python 2.7 is unsupported so far.
No soporta la última versión.
Psyco does not work on any 64-bit systems at all
Y no soporta 64 bits

Lo siento no vale.

#12 Python puede implementar un multihilo perfecto Pero no lo tiene. Lo que tiene es un bloqueo que impide tener en CPU más de un hilo. Tener en CPU más de un hilo no es thread safe(si se ejecuta más de un hilo a la vez pueden tener conflictos claro), por supuesto, pero sin eso la única manera de aprovochar varios nucleos es usar multiproceso, con todo lo que ello implica.

No me convences, Python no me parece un buen framework principal para una plataforma.

PS: Y aunque no es racional creo que para aplicaciones complejas que tengan que ser rediseñadas a mitad, un lenguaje como java es mejor, y además se disponen de mejores herramientas para ello. Y me gusta bastante pyhton.

jonolulu

#2 Pues sí, pudiendo hacer el gilipollas con phyton...

bage

#2 Combinar Java con Python es tener una perspectiva muy pobre. Además no está hablando del lenguaje en sí, sino de todas las tecnologías Java (JSR).

D

A mí me parece un artículo estupendo, realmente se lo han leído entero aquellos que lo tachan de sensacionalista?

l

Un disparate absoluto de Oracle.

redewa

Una alternativa éticamente 100% libre no está muy lejos de nosotros.

b

Biennn!!!! A ver si es verdad y se va a la mierda esa mierrrda de cosa.

D

No, esto sólo es el fin del principio.