Puro navegador web Java, ¿es práctico? [cerrado]


29

Sé que un navegador web Java es posible, pero ¿es práctico? He visto el proyecto Lobo y debo admitir que estoy impresionado, pero por lo que he reunido parece que el desarrollo se detuvo en 2009. ¿Un navegador codificado en Java puro (sin enlaces WebKit de Java de ningún tipo) podría competir con aquellos entre las filas de Chrome o Firefox, o sería inherentemente más lento, lo que dificultaría al usuario?


55
Pregunta interesante porque un navegador web llamado HotJava fue una de las primeras aplicaciones de demostración de Java.
user16764

3
No era solo una aplicación de demostración, era una parte clave de la estrategia comercial Sun Java de finales de los 90 / principios de 2000, y la llevaron a los socios con bastante fuerza. Agregue a la lista de rarezas de Java de Sun alrededor de la misma era: JavaOS / JavaStation.
JustinC

3
Técnicamente hablando, ¿las versiones de Android de Opera, Chrome y FF no se escribirían en Java? No he probado FF, pero dado un dispositivo decente, Chrome & Opera funcionan bastante bien.
TC1

2
@ TC1 Creo que están escritos en C \ C ++ con el Kit de desarrollo nativo de Android.
Wesley Wiser

Nuevamente cerrado debido a un razonamiento ilógico. ¿Entonces (SE) espera que solo 'expertos' respondan? ¿Y cómo responderían los expertos ahora que lo ha cerrado? ¿No se supone que alguien debe responder a un foro comunitario? ¿No corresponde al sitio mostrar primero las respuestas que votaron "arriba"? Las respuestas malas y rechazadas pueden ocultarse o archivarse correctamente. No deberías ser tan obstinado y autoritario.
killjoy

Respuestas:


44

Lo más probable es que el lenguaje de programación no sea el obstáculo. La gestión de memoria obligatoria de la JVM puede ser una desventaja en algunas partes críticas para el rendimiento (por ejemplo, falta de memoria; pero entonces, el GC de Java podría ser mejor para prevenir pérdidas de memoria que cualquier cosa que pueda rodar usted mismo), y hay algunas preocupaciones de seguridad adicionales, Pero aparte de eso, no veo obvios tapones de espectáculo.

Sin embargo.

Un navegador web en la escala de Firefox o Chromium es una tarea enorme , y ambos proyectos tienen una gran experiencia detrás de ellos: Mozilla se basa en décadas de construcción de navegadores (y algunas fallas famosas), y Chrome / Chromium tiene Google y Apple (una fuerza importante en el desarrollo de WebKit) detrás de él y absorbió una gran cantidad de conocimiento y experiencia de KDE y otros grandes proyectos de código abierto sólidos como una roca. Ambos hacen uso adicional de docenas de bibliotecas probadas en batalla, no solo motores de renderizado, sino todo tipo de cosas. Los gráficos vectoriales, la representación de fuentes, el análisis, la manipulación del árbol XML DOM, la creación de redes, el almacenamiento en caché, la criptografía, la lista sigue y sigue, y no desea reinventar todas esas ruedas usted mismo, porque son difíciles de hacer y fáciles de equivocar. .

En resumen, construir un navegador web de fuerza industrial es bastante difícil, y esa es la razón por la que solo hay un puñado de historias de éxito en este campo. El lenguaje de programación tiene relativamente poco que ver, aunque C y C ++ tienen una ventaja, tanto técnica como social.


11

En teoría, sin duda podría hacerse. Desde un punto de vista práctico, sin embargo, parece un poco más cuestionable. loboni siquiera está cerca de la primera vez que se ha probado. De hecho, se suponía que uno de los primeros escaparates de la superioridad de Java era el navegador HotJava, que iba a cambiar el mundo y dejaría obsoletos a los navegadores de "generación mosaica" .

Por supuesto, todos sabemos que lo contrario es cierto: HotJava está muerto y nunca fue realmente un competidor serio en las guerras de los navegadores (de hecho, si busca "HotJava browser", algunos de los mejores resultados son informes de errores sobre cómo no funcionó correctamente, incluso para las propias aplicaciones web de Sun).

Personalmente, creo que preguntarme si es posible o práctico es (principalmente) mirar y pensar en la dirección equivocada. La pregunta no es si Java conlleva sanciones tan masivas para que un proyecto de este tipo no sea práctico. La pregunta es si Java tiene suficientes ventajas para justificar tal proyecto.

El hecho simple es que webkit (para usar su ejemplo) es una pieza de código grande y compleja. Incluso si suponemos que Java es mucho más maravilloso que podríamos hacer lo mismo con, digamos, la mitad del tamaño y la complejidad, el resultado sigue siendo un código bastante grande y complejo (del mismo modo V8, etc.)

Creo que antes de duplicar esa cantidad de trabajo, la mayoría de la gente querría un poco más de seguridad que: "creemos que nuestro producto es probable que sea bastante competitivo".

Si comienza desde un conjunto de características visibles para el usuario para un navegador, y luego trata de determinar la forma más eficiente de producir un navegador con esas características, "Java" probablemente no será parte de esa respuesta, excepto como parte de " Javascript ". Si la historia hubiera funcionado de manera diferente, probablemente no haya razón para que no pueda (al menos en teoría) ser parte de la respuesta, pero dadas las circunstancias actuales, no lo es.

Además, veo muy pocas posibilidades de que ese cambio. Apenas puedo ver que suceda si Oracle (o posiblemente IBM) decidió que era útil mantener la posición competitiva de Java frente a (por un ejemplo obvio) Microsoft .NET, pero eso parece dudoso a menos que .NET comience a amenazar el mercado central de Java.

Fuera de eso, cualquier conjunto de características que pueda imaginar (fuera de "escrito en Java puro" como una característica en sí misma) casi con certeza se puede lograr de manera más rápida y fácil de otras maneras que escribiendo un navegador completamente en Java.


1
Sentí

2
Recordemos también que en los días de HotJava, Java era débil en términos de bibliotecas disponibles, experiencia del desarrollador y velocidad (a veces ralentizaciones de 10-15x). Hoy, es bastante opuesto en cada área. Incluso hay procesadores Java ahora (¿puedes decir que el cliente ligero del navegador java en el procesador java? Guiño) Creo que HotJava falló simplemente porque la plataforma Java b / c no era lo suficientemente buena entonces .
Nick P

5

Sinceramente, creo que un equipo dedicado y conocedor podría crear un navegador web de alto rendimiento en Java. La verdadera pregunta es, ¿por qué? Tener el navegador escrito en un idioma específico no es realmente una característica. La gente usará Chrome porque es rápido o Firefox porque es extensible, pero no usarán JBrowser solo porque está escrito en Java. Entonces, la verdadera pregunta es: ¿qué problema estás tratando de resolver?

La siguiente pregunta, suponiendo que tenga una razón para escribir JBrowser es, "¿el uso de Java hace que la tarea sea más fácil o más difícil?" Google, al hacer Chrome, lo escribió principalmente en C / C ++ a pesar del hecho de que son una tienda muy pro-Java. Parece bastante probable que creyeran que los beneficios de Java no traerían una ganancia neta a tiempo.


2

Con Nashorn (el Javascript en la JVM reemplazando a Rhino) llegando a la JVM como parte de Java 8, esto es eminentemente factible. Sin embargo, como otros han señalado, un navegador web moderno tiene muchísimo y parece más fácil incrustar WebKit si necesita alojar capacidades de navegación dentro de una aplicación Java :-).


1

La respuesta principal actual es excelente. Sin embargo, agregaré que uno no necesita recodificar totalmente algo en Java. Existen herramientas que convierten la fuente nativa en códigos de bytes Java con diversos grados de interoperabilidad. A menudo crean una especie de intérprete o utilizan una representación similar a JVM como MIPS como un trampolín. Uno podría dividir el desarrollo de un navegador Java en muchos pasos al convertir bibliotecas nativas clave en código de bytes Java, integrarlas con la fuente pura del navegador Java e implementar gradualmente más código de biblioteca como fuente pura de Java.

Esto le permite contener todo dentro de la JVM más segura. Sin embargo, será un dolor en el trasero asegurando la eficiencia. Hay un precedente en la refactorización gradual de aplicaciones heredadas grandes, pre-Agile / OOP. Además, algunos de los componentes ya tienen buenas implementaciones de Java y también podrían usarse para reducir la mano de obra.


0

Tengo que decir que estoy un poco parcial aquí, pero aquí voy. No me gustan los predicadores de C / C ++, sé que hay algunas aplicaciones de ingeniería increíblemente buenas por ahí, pero es solo una herramienta, a menudo tengo la impresión, muchas personas solo mencionan C / C ++ para una solución que pierden más de un punto ( http://www.paulgraham.com/avg.html ver la paradoja del bulbo). Intento ver los hechos: Java es tan rápido C / C ++ pero requiere más memoria por lo tanto. O déjame reformular, puedes escribir código java que es tan rápido como C / C ++ pero ese programa consumirá más memoria. Espero que podamos estar de acuerdo en esto.

Si observa la productividad, puede crear soluciones Java para ciertos problemas (por ejemplo, Enterprise Java) relativamente fácil, en comparación con las soluciones C ++. Un navegador web es algo completamente diferente. Veo dos / tres requisitos principales:

  • Tiene que ajustarse a especificaciones enormes, HTML, JavaScript, etc. Esto implica problemas como las API de dibujo 2D. ¿O cómo pasar de una llamada al sistema operativo (como primitivo dibujo) a la representación de texto o fuente ("renderizado"). Eche un vistazo a bibliotecas como el cairo (C) y otros intentos como gezira (www.youtube.com/watch?v=P97O8osukZ0, https://github.com/damelang/gezira )
  • Tiene que "sentirse" fluido, lo que significa que ciertas operaciones solo tienen ms para ejecutarse.
  • Tiene que formar un concepto de interfaz de usuario que forme una experiencia única, para competir en las 'guerras de navegador' de hoy, lo cual es bastante desafiante.

Para resumir: sí, podría crear navegadores en casi cualquier lenguaje de programación con resultados casi idénticos en comparación con los buques de vapor C ++ actuales. Pero para hacerlo, necesitarías una cantidad extraordinaria de esfuerzo. No sé cuánto (en millones), no quisiera adivinar eso. Tal vez podríamos obtener este resultado final: a las personas no les gusta optimizar en lenguajes de alto nivel, o tal vez sea más barato obtener personas que les guste optimizar en C / C ++ porque hay muchos (en comparación con otros expertos en idiomas que pueden optimizar en un nivel similar)


2
Estoy tentado a rechazar el voto porque no dividiste tu respuesta en varios párrafos. Rompa su muro de texto con un espacio en blanco.
Gilbert Le Blanc

2
Bueno, escribo desde el móvil, y eso es lo mejor que puedo hacer con la interfaz móvil, lo siento
AndreasScheinert

1
Fui a una computadora portátil y lo arreglé.
AndreasScheinert el

2
"O déjame reformular, puedes escribir código java que es tan rápido como C / C ++ pero ese programa consumirá más memoria. Espero que podamos estar de acuerdo en esto". No, no podemos, al menos no en todos los casos. Java no le permitirá implementar múltiples administradores de memoria personalizados para diferentes patrones de asignación de memoria. No puede desactivar la comprobación de límites de la matriz cuando decide que no es necesario, solo tiene que esperar que el JIT reconozca cuando no es necesario. Estos problemas no aparecen en la mayoría de los programas, pero pueden ser cruciales en aplicaciones que necesitan cada último nanosegundo de rendimiento.
Charles E. Grant

1
Sus argumentos repetidos aquí de que la recolección de basura tiene algunas implicaciones de rendimiento. Estoy de acuerdo con eso. Pero es solo un aspecto.
AndreasScheinert

0

Sería comparable al concepto en los días de Windows 9x de ejecución del software OpenGL frente a OpenGL acelerado por hardware. El problema con el uso de Java para algo así como un navegador web es que potencialmente usa muchos ciclos de reloj adicionales para hacer algo que puede ser posible en muchos menos en un idioma más nativo. Ese también era el concepto con OpenGL: se podía completar la tarea pero se requería mucho más procesamiento para hacerlo.

Entonces, ¿es posible? Potencialmente. ¿Sería competitivo? Improbable: algo en el código altamente optimizado y dependiente de la plataforma probablemente tendrá una ventaja de velocidad significativa.

Sin embargo, esto es meramente una especulación.


-1

Sobre la viabilidad de un navegador web Java escrito en Java, tal vez se hizo una pregunta incorrecta.

No veo la necesidad de reinventar la rueda y escribir un navegador completo cuando la mayoría de los existentes son gratuitos y tienen muchas funciones.

Dicho esto, lo que yo (¿nosotros?) Deberíamos buscar es "algo" lo suficientemente bueno como para leer páginas web SIN toda la basura (publicidad, videos, gifs) que se acumula.

Google es el principal delincuente aquí con todos sus anuncios y tal.

Para abordar eso, escribí un navegador Java que usa el Java HTMLEditorKit con su implementación HTML 3.2 y lee una página web como texto, elimina todo el código javascript, el código de estilo, los enlaces, los metadatos (otra fuente de irritación con su auto reload) e intenta corregir algunos caracteres especiales y enlaces de imágenes establecidos mediante javascripts. Hipervínculos y trabajos de navegación. Para leer cosas como LA Times, NY Times, Il Corriere.it, ElPais.es, LeMonde.fr que ofrece. Incluso Bing y las búsquedas de Google llegan. Finalmente o cuando me lo pida, lo pondré a disposición de forma gratuita. No es mucho pero es un comienzo.


-4

Claro que se podría hacer. Y también tendría sentido. Ningún navegador admite los estándares completos de w3c por razones poco claras. Por parte del soporte de css3, las compañías de navegadores tampoco admiten estándares. -moz- * y -webkit- * nunca serán parte del estándar. Por lo tanto, un navegador que cumpla con los estándares completos debería ignorarlos. Uno de los mayores errores de w3c es la falta total de especificaciones de representación. Entonces, la misma página web que cumple con los estándares se vería diferente en cada navegador, una pesadilla de diseño gráfico. Otro error del w3c es la falta de velocidad. ¿5 años de discusión y todavía solo un borrador de estándar para html5? Entonces su organización está bloqueando cualquier innovación seria.

Creo que deberíamos ignorar w3c, ignorar sus especificaciones y hacer un estándar de la comunidad dentro de medio año para un lenguaje de marcado de aplicaciones web CON las especificaciones de representación y la seguridad en mente. Recuerde que HTML nunca fue diseñado para aplicaciones web, porque no había aplicaciones web en el momento en que se usaba sgml como base para HTML.


1
Si esto es sarcasmo, no se ve con suficiente claridad. Tampoco señala las inevitables trampas con lo que está sugiriendo. Si esto no es sarcasmo, le recomiendo que estudie cómo se crean los estándares.

Sí, es sarcasmo, pero el inglés no es mi lengua materna y no, no es sarcasmo, ya que los estándares que tardan más de 5 años en entregar solo un borrador nunca se pueden usar como estándar en la práctica.
Vicky Ronnen

no pertenece aquí, ni aborda la cuestión. Ni siquiera sarcásticamente.
scravy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.