Saf Java web tarayıcısı, pratik mi? [kapalı]


29

Bir Java web tarayıcısının mümkün olduğunu biliyorum ama pratik mi? Lobo projesini gördüm ve etkilendiğimi itiraf etmeliyim, ancak topladığımdan 2009'da gelişme durdu gibi görünüyor. Saf Java kodlu bir tarayıcı (hiçbir türden WebKit java bağlaması yok) rekabet edebilecek mi Chrome veya Firefox'un saflarında olanlar mı, yoksa kullanıcıyı engelleyen doğal olarak daha mı yavaş olurdu?


5
İlginç bir soru, çünkü HotJava adlı bir web tarayıcısı, Java'nın ilk demo uygulamasıydı.
user16764

3
Bu sadece bir demo uygulaması değildi, 90'lı yılların sonundaki / 2000 başındaki ticari Sun Java stratejisinin önemli bir parçasıydı ve onu ortakları zorladı. Aynı dönemdeki Sun kaynaklı Java tuhaflıklarının listesine ekleyin: JavaOS / JavaStation.
JustinC

3
Teknik olarak konuşursak, Opera, Chrome ve FF'ın Android versiyonları Java ile yazılmış olmaz mı? FF'yi denemedim, ancak düzgün bir cihaz verildiğinde, Chrome ve Opera oldukça iyi çalışıyor.
TC1

2
@ TC1 C \ C ++ dilinde Android Native Development Kit ile yazıldığını düşünüyorum.
Wesley Wiser

Mantıksız muhakeme nedeniyle tekrar kapandı. Yani siz (SE) sadece 'uzmanlardan' cevap vermesini bekliyorsunuz? Ve uzmanlar şimdi kapattığınıza nasıl cevap verebilir? Bir topluluk forumunun kimse tarafından cevaplanması gerekmiyor mu? İlk önce 'yukarı' oy verilmiş cevapları göstermek siteye bağlı değil mi? Kötü ve Aşağı Oylanan cevaplar gizlenebilir veya arşivlenebilir. Bu kadar düşünülmüş ve yetkili olmamalısınız.
killjoy

Yanıtlar:


44

Programlama dili, büyük olasılıkla, tökezleyen blok olmayacak. JVM'nin zorunlu bellek yönetimi, performans açısından kritik bazı bölümlerde bir dezavantaj olabilir (örneğin, bellek açlığı; ancak o zaman, Java’nın GC’si, bellek sızıntısını önlemede kendinizden alabileceğiniz herhangi bir şeyden daha iyi olabilir) ve birkaç ekstra güvenlik kaygısı olabilir. ama bunun dışında, bariz bir gösteri durdurucu görmüyorum.

Ancak.

Firefox veya Chromium ölçeğindeki bir web tarayıcısı çok büyük bir girişimdir ve her iki projenin de arkalarında büyük bir tecrübe birikimi vardır - Mozilla, onlarca yıl süren tarayıcı oluşturma (ve bazı ünlü başarısızlıklar) üzerine inşa edilmiştir ve Chrome / Chromium'un hem Google hem de Apple'ı vardır. (WebKit'in geliştirilmesinde büyük bir güç) arkasındaki ve KDE ve diğer büyük açık kaynak kodlu Açık Kaynak projelerinden pek çok bilgi ve deneyim aldı. Her ikisi de, sadece motorları değil, her şeyi de işleyen, kanıtlanmış düzinelerce kütüphaneden yararlanır. Vektör grafikleri, font oluşturma, ayrıştırma, XML DOM Ağacı manipülasyonu, ağ oluşturma, önbellekleme, kriptografi, liste uzayıp gidiyor ve tüm bu tekerlekleri kendiniz yeniden icat etmek istemiyorsunuz çünkü yapmak zor ve yanlış anlaşılıyorlar .

Kısacası, sektörde güçlü bir web tarayıcısı oluşturmak oldukça zordur ve bu nedenle bu alanda sadece bir avuç başarı öyküsü mevcut. Programlama dili, C ve C ++ teknik ve sosyal olarak bir avantaja sahip olmasına rağmen, onunla ilgisi çok az.


11

Teorik olarak, şüphesiz yapılabilir. Bununla birlikte, pratik açıdan biraz daha şüpheli görünüyor. loboilk defa denenmeye bile yakın değil. Aslında, Java'nın üstünlüğünün ilk vitrinlerinden birinin, dünyayı değiştirecek ve "Mozaik üretimi" tarayıcılarını modası geçmeyecek olan HotJava tarayıcısı olması gerekiyordu .

Tabii ki, hepimiz biliyoruz ki bunun tam tersi doğrudur: HotJava öldü ve tarayıcı savaşlarında hiçbir zaman ciddi bir rakip olmadı (aslında, "HotJava tarayıcısı" nı ararsanız, en çok kullanılan isabetler hata raporları içindir.) Sun'ın kendi web uygulamaları için bile, doğru şekilde çalışmadığı hakkında.

Şahsen, bunun mümkün veya pratik olup olmadığını merak etmenin (çoğunlukla) yanlış yöne bakmak ve düşünmek olduğunu düşünüyorum. Asıl soru, Java'nın böyle bir projenin pratik olmaması için bu kadar ağır cezalar taşıması değil . Soru, Java'nın böyle bir projeyi haklı çıkarmak için yeterli avantajlara sahip olup olmadığıdır.

Basit gerçek şu ki, webkit (örneğinizi kullanmak için) büyük, karmaşık bir kod parçasıdır. Java'nın çok daha harika olduğunu varsaysak bile, boyut ve karmaşıklığın yarısı ile aynı şeyi yapabiliriz, sonuç yine de oldukça büyük, karmaşık bir kod parçasıdır (aynı şekilde V8, vb.).

Bence bu miktarda iş çoğaltılmadan önce çoğu insan, “ürünümüzün oldukça rekabetçi olabileceğini düşünüyoruz” dan biraz daha fazla güvence istiyor.

Bir tarayıcı için kullanıcı tarafından görülebilen bir dizi özellikten başlayıp bu özelliklere sahip bir tarayıcı üretmenin en etkili yolunu belirlemeye çalışırsanız, "Java" muhtemelen "," JavaScript". Tarih farklı şekilde çalışmış olsaydı, hiç bir sebebiniz yoksa olamazdı (teorik olarak en azından) cevabın parçası, ancak verilen mevcut şartların olması, öyle değil.

Ayrıca, bu değişimin olasılığını çok az görüyorum. Oracle (ya da muhtemelen IBM), Microsoft’un Java’nın rekabetçi duruşunu (açık bir örnek için) Microsoft .NET’e karşı korumanın yararlı olacağına karar vermesi durumunda, ancak .NET’in Java pazarını tehdit etmediği sürece şüpheli görünüyor.

Bunun dışında, hayal edebileceğiniz herhangi bir özellik kümesi ("Saf Java'da yazılmış" dışında) kendi içinde bir özellik olarak), tamamen Java'da bir tarayıcı yazmaktan başka yöntemlerle neredeyse daha hızlı ve kolay bir şekilde elde edilebilir.


1

2
Ayrıca HotJava günlerinde Java'nın mevcut kütüphaneler, geliştirici deneyimi ve hız (bazen 10-15x yavaşlama) açısından zayıf olduğunu hatırlayalım. Bugün, her alanda oldukça zıt. Java işlemcileri Ben HotJava basitçe b / c Java platformu yeterince iyi değildi başarısız olduğunu düşünüyorum (eğer java işlemci üzerinde java tarayıcı ince istemci? Kırpmak diyebiliriz) şimdi bile var o zaman .
Nick P,

5

Dürüst olmak gerekirse, bilgili ve özel bir ekibin Java'da performanslı bir web tarayıcısı oluşturabileceğine inanıyorum. Asıl soru, neden? Tarayıcının belirli bir dilde yazılmış olması gerçekten bir özellik değildir. İnsanlar hızlı veya Firefox olduğundan genişletilebilir olduğu için Chrome'u kullanacak, ancak yalnızca Java'da yazıldığı için JBrowser kullanmayacaklar. Böylece asıl soru, hangi sorunu çözmeye çalışıyorsunuz?

Bir sonraki soru, JBrowser'ı yazmak için bir nedeniniz olduğunu varsayarak, "Java kullanmak işi kolaylaştırır mı yoksa zorlaştırır mı?" Google, Chrome'u yaparken, Java yanlısı bir mağaza olmalarına rağmen öncelikle C / C ++ dilinde yazdı. Java’nın yararlarının zamanında net bir kazanç getirmeyeceğine inandıklarını düşünüyor gibi görünüyor.


2

Nashorn (JVM'deki Rhino'yu değiştiren Javascript), Java 8'in bir parçası olarak JVM'ye geliyorsa, bu kesinlikle yapılabilir. Bununla birlikte, başkalarının da belirttiği gibi - modern bir web tarayıcısında çok fazla şey var ve bir Java uygulamasında göz atma yeteneklerini barındırmanız gerekiyorsa, WebKit'i gömmek daha kolay görünüyor :-).


1

Şu anki en iyi cevap mükemmel. Bununla birlikte, birisinin tamamen bir şeyi Java'ya kodlaması gerekmediğini de ekleyeceğim. Değişken derecelerde birlikte çalışabilirlikle yerel kaynağı Java bytecode'larına dönüştüren araçlar vardır. Genellikle bir tercüman yaratırlar veya bir basamak taşı olarak MIPS gibi JVM benzeri bir gösterimi kullanırlar. Anahtar yerel kütüphaneleri Java bayt koduna dönüştürerek, saf Java tarayıcı kaynağıyla birleştirerek ve saf Java kaynağı olarak aşamalı olarak daha fazla kütüphane kodunu uygulayarak bir Java tarayıcısı geliştirmeyi adım adım ilerletebilirsiniz.

Bu, daha güvenli JVM içinde her şeyi içermenizi sağlar. Ancak, verim sağlayan popoda bir ağrı olacaktır. Büyük, Çevik / OOP eski uygulamalarını kademeli olarak yeniden düzenleme konusunda bir miktar emsal var. Ayrıca, bileşenlerin bazıları zaten iyi Java uygulamalarına sahip ve bu da emeği azaltmak için de kullanılabilir.


0

Burada biraz yanlı olduğumu söylemeliyim, ama işte gidiyorum. C / C ++ vaizlerinden hoşlanmıyorum, orada bazı inanılmaz iyi tasarlanmış uygulamalar olduğunu biliyorum ama sadece A aracı, sık sık izlenim edindim, çoğu insan sadece C / C ++ 'dan daha fazla özledikleri bir noktadan daha fazla özlüyor. http://www.paulgraham.com/avg.html ampul paradoksuna bakınız). Gerçeklere bakmaya çalışıyorum: Java hızlı C / C ++ kadar hızlı ama bu nedenle daha fazla bellek gerektiriyor. Veya tekrar ifade etmeme izin verin, C / C ++ kadar hızlı olan java kodunu yazabilirsiniz ancak bu program daha fazla bellek tüketecektir. Umarım bu konuda hemfikir olabiliriz.

Verimliliğe bakarsanız, C ++ çözümlerine kıyasla nispeten kolay olan belirli problemler için java çözümleri (örneğin java java) oluşturabilirsiniz. Bir web tarayıcısı tamamen farklı bir şeydir. İki / üç belediye başkanı şartı görüyorum:

  • Büyük teknik özelliklere, HTML, JavaScript vb .'ye uygun olmalıdır. Bu, 2D Çizim API'leri gibi sorunları içerir. Veya bir işletim sistemi sistem çağrısından (çizim ilkel olarak) metin veya font gösterimini (“oluşturma”) nasıl elde edersiniz. Kahire (C) gibi kütüphanelere ve gezira gibi diğer girişimlere bir göz atın (www.youtube.com/watch?v=P97O8osukZ0, https://github.com/damelang/gezira )
  • Akıcı bir şekilde “hissetmek” zorundadır, bu, belirli işlemlerin yalnızca yürütülecek ms'ye sahip olduğu anlamına gelir.
  • Bugünün 'tarayıcı savaşlarında' oldukça zorlayıcı olan rekabet edebilmek için benzersiz bir deneyim oluşturan bir UI Kavramı oluşturmak zorundadır.

Özetlemek gerekirse: evet, bugünün C ++ buhar gemilerine kıyasla neredeyse aynı sonuçlara sahip hemen hemen her programlama dilinde tarayıcılar oluşturabilirsiniz. Ancak bunun için olağanüstü bir çabaya ihtiyacın olacak. Ne kadarını bilmiyorum (milyonlarca), bunu tahmin bile etmek istemem. Belki şu sonucu elde edebiliriz: insanlar yüksek seviyeli dillerde optimizasyon yapmaktan hoşlanmaz, veya belki C / C ++ 'da optimizasyon yapmak isteyenlere ulaşması daha ucuzdur çünkü çok fazla (optimize edebileceğiniz diğer dil uzmanlarıyla karşılaştırıldığında) benzer bir seviye).


2
Oyunuzu reddetmek istekliyim, çünkü cevabınızı birden fazla paragrafa bölmediniz. Lütfen metin duvarınızı beyaz boşlukla parçalayın.
Gilbert Le Blanc,

2
Cep telefonundan iyi yazarım ve mobil arayüzle yapabileceğimin en iyisi, üzgünüm
AndreasScheinert

1
Bir dizüstü bilgisayara gittim ve onu düzelttim.
AndreasScheinert

2
"Veya C / C ++ kadar hızlı olan Java kodunu yazabilmeme izin verin ama bu program daha fazla bellek tüketecektir. Umarım bu konuda hemfikir olabiliriz." Hayır, yapamayız, en azından her durumda değil. Java, farklı bellek ayırma kalıpları için birden fazla özel bellek yöneticisi uygulamanıza izin vermez. Gerekmediğine karar verdiğinizde dizi sınırlarını denetlemeyi kapatamazsınız, gerekmediğinde JIT’in tanıyacağını ümit etmeniz gerekir. Bu konular çoğu programda ortaya çıkmaz, ancak her son nanosaniyelik performansa ihtiyaç duyan uygulamalarda çok önemli olabilir.
Charles E. Grant

1
Burada yinelenen argümanlarınız, çöp toplamanın bazı performans etkilerine sahip olduğunu iddia ediyor. Buna katılıyorum. Ama bu sadece bir yönü.
AndreasScheinert 9:12

0

OpenGL ile çalışan donanımın hızlandırdığı OpenGL yazılımının Windows 9x günündeki konseptiyle karşılaştırılabilir. Java'yı bir web tarayıcısı gibi bir şey için kullanmayla ilgili sorun, daha az yerel bir dilde mümkün olabilecek bir şeyi yapmak için potansiyel olarak birçok ekstra saat döngüsü kullanmanızdır. OpenGL'de de konsept buydu - görevi tamamlayabilirdiniz ancak bunu yapmak için çok daha fazla işlem gerekiyordu.

Yani mümkün mü? Potansiyel. Rekabetçi olur mu? Muhtemel - yüksek düzeyde optimize edilmiş, platform bağımlı kodda bir şeyler büyük olasılıkla önemli bir hız avantajına sahip olacak.

Bu sadece spekülasyon.


-1

Java'da yazılmış bir Java web tarayıcısının uygulanabilirliği hakkında, belki yanlış bir soru soruldu.

Mevcut olanların çoğu ücretsiz ve zengin özelliklere sahip olduğunda tekerleği yeniden icat etmeye ve tam teşekküllü bir tarayıcı yazmaya gerek yok görüyorum.

Bu (biz?) Aramamız gereken şey, yığılmış olan tüm saçmalıklar (yeniden reklamlar, videolar, gif'ler) OLMADAN web sayfalarını okumak için yeterince iyi bir şeydir.

Google, buradaki tüm reklamlarıyla birlikte baş suçlu

HTML HT uygulamasıyla Java HTMLEditorKit'i kullanan ve bir web sayfasını metin olarak okuyan bir Java tarayıcısı yazdığım ve tüm javascript kodunu, stil kodunu, bağlantıları, meta verilerini (otomatik olarak başka bir tahriş kaynağı) sorar. yeniden yükle) ve javascripts ile ayarlanan bazı özel karakterleri ve görüntü bağlantılarını düzeltmeyi dener. Köprüler ve gezinti çalışması. LA Times, NY Times, Il Corriere.it, ElPais.es, LeMonde.fr gibi yayınlar. Bing ve Google aramaları bile geliyor. Sonunda veya istendiğinde ücretsiz olarak hazır hale getireceğim. Çok değil ama bir başlangıç.


-4

Tabii ki yapılabilirdi. Ve bu da mantıklı olurdu. Hiçbir tarayıcı belirsiz nedenlerle tam w3c standartlarını desteklemiyor. Css3 desteği kısmında tarayıcı şirketleri de standartları desteklememektedir. -moz- * ve -webkit- * asla standardın bir parçası olmayacak. Bu nedenle, tam standartlara uygun bir tarayıcı onları görmezden gelmelidir. W3c'deki en büyük hatalardan biri, görüntü oluşturma spesifikasyonlarının toplam eksikliğidir. Dolayısıyla aynı standartlara uygun web sayfası, her tarayıcıda, grafik tasarımlı bir kabus olarak farklı görünür. Bir diğer w3c başarısızlığı da hızın olmaması. 5 yıl tartışma ve hala sadece html5 için bir taslak standart? O zaman organizasyonun ciddi bir yeniliği engelliyor.

Bence w3c'yi göz ardı etmeliyiz, özelliklerini göz ardı etmeliyiz ve bir web uygulaması biçimlendirme dili için özellikleri ve güvenliği göz önünde bulundurarak yarım yıl içinde bir topluluk standardı yapmalıyız. HTML’nin hiçbir zaman web uygulamaları için tasarlanmadığını unutmayın; çünkü sgml’nin HTML’nin temelini oluşturduğu sırada hiçbir web uygulaması yoktu.


1
Bu alaycılıksa, yeterince net bir şekilde karşılaşmaz. Ne önerdiğinle birlikte kaçınılmaz tuzaklara dikkat çekmiyorsun. Bu alaycılık değilse , o zaman standartların nasıl oluşturulduğunu incelemenizi tavsiye ederim.

Evet alaycılıktır, ancak İngilizce benim anadilim değildir ve hayır, sadece bir taslak hazırlamak için 5 yıldan uzun süren standartların uygulamada asla tam olarak kullanılamaması nedeniyle alaysızlık değildir.
Vicky Ronnen

buraya ait değil ne de soruyu ele almıyor. alaycı bile değil.
0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.