순수한 자바 웹 브라우저, 실용적입니까? [닫은]


29

Java 웹 브라우저가 가능하다는 것을 알고 있지만 실용적입니까? 나는 Lobo 프로젝트를 보았고 나는 감명 받았다는 것을 인정해야하지만, 내가 모은 것에서 2009 년에 개발이 중단 된 것 같습니다. 순수한 Java (WebKit Java 바인딩이 아닌 모든 유형)로 코딩 된 브라우저가 경쟁 할 수 있습니까? 크롬이나 파이어 폭스의 순위 중 하나입니까, 아니면 본질적으로 느려서 사용자를 방해합니까?


5
HotJava라는 웹 브라우저가 초기 Java 데모 앱 이었기 때문에 흥미로운 질문입니다.
user16764

3
단순한 데모 앱이 아니라 90 년대 후반부터 상용화 된 Sun Java 전략의 핵심 부분이었으며 파트너에게 매우 힘을 쏟았습니다. 같은 시대에 Java의 Java 기묘한 목록 인 JavaOS / JavaStation에 추가하십시오.
JustinC

3
기술적으로 말하면, Android 버전의 Opera, Chrome 및 FF는 Java로 작성되지 않습니까? FF를 시도하지는 않았지만 적절한 기기를 사용하면 Chrome & Opera가 잘 작동합니다.
TC1

2
@ TC1 안드로이드 네이티브 개발 키트로 C \ C ++로 작성되었다고 생각합니다.
웨슬리 와이저

비논리적 추론으로 인해 다시 문을 닫았습니다. 따라서 (SE)는 '전문가'만 대답 할 것으로 기대합니까? 그리고 전문가들이 당신이 문을 닫았다 고 어떻게 대답할까요? 커뮤니티 포럼은 누구나 대답해야합니까? 먼저 '위로'투표 한 답변을 표시하는 것이 사이트에 있지 않습니까? 나쁜 답변 및 다운 투표 답변은 숨기거나 보관할 수 있습니다. 당신은 그렇게 생각하고 권위적이어서는 안됩니다.
killjoy

답변:


44

프로그래밍 언어는 아마도 걸림돌이되지 않을 것입니다. JVM의 필수 메모리 관리는 일부 성능에 중요한 부분 (예 : 메모리 굶주림)에서 불리 할 수 ​​있습니다. 그러나 Java의 GC는 실제로 롤링 할 수있는 것보다 메모리 누수를 방지하는 데 더 나을 수 있습니다. 그러나 그 외에는 확실한 쇼 스토퍼가 없습니다.

하나.

Firefox 또는 Chromium 규모의 웹 브라우저는 방대한 사업이며, 두 프로젝트 모두 뒤에 경험이 풍부합니다. Mozilla는 수십 년 동안 브라우저를 구축하고 (고유 한 실패) Chrome / Chromium에는 Google과 Apple이 있습니다. (WebKit 개발의 주요 힘)은 KDE 및 기타 대규모의 견고한 오픈 소스 프로젝트의 많은 지식과 경험을 흡수했습니다. 둘 다 추가적으로 엔진을 렌더링 할뿐만 아니라 모든 종류의 것들을 비롯하여 수십 가지의 입증 된 라이브러리를 사용합니다. 벡터 그래픽, 글꼴 렌더링, 파싱, XML DOM 트리 조작, 네트워킹, 캐싱, 암호화, 목록이 계속 이어지고, 모든 휠을 스스로 재발 명하고 싶지 않습니다. .

즉, 산업 강도 웹 브라우저를 구축하는 것은 굉장히 어려운이며, 그건 이 분야에서 성공 사례의 소수가 이유. C와 C ++가 기술적으로나 사회적으로 유리한 점이기는하지만 프로그래밍 언어는 상대적으로 관련이 없습니다.


11

이론적으로는 의심의 여지없이 수행 될 수 있습니다. 그러나 실제적인 관점에서는 좀 더 의심스러워 보입니다. lobo처음 시도한 것에 가깝지 않습니다. 사실, Java의 우수성에 대한 초기 쇼케이스 중 하나는 세상을 변화 시키고 "모자이크 세대 (Mosaic generation)"브라우저를 쓸모 없게 하는 HotJava 브라우저 인 것으로 생각 되었습니다 .

물론, 우리 모두는 그 반대가 사실이라는 것을 알고 있습니다. HotJava는 죽었고 브라우저 전쟁에서 결코 심각한 경쟁자가 아닙니다 (사실, "HotJava 브라우저"를 검색하면 가장 인기있는 것은 버그 리포트입니다. Sun의 자체 웹 응용 프로그램에서도 제대로 작동하지 않는 방법).

개인적으로, 그것이 가능한지 실용적인지 (대부분) 잘못된 방향으로보고 생각하는지 궁금합니다. 문제는 Java가 그러한 프로젝트가 비실용적 일 수있는 엄청난 처벌을 받는지 여부 는 아닙니다 . 문제는 Java가 그러한 프로젝트를 정당화하기에 충분한 이점이 있는지 여부입니다.

간단한 사실은 웹킷 (예제를 사용하기 위해)이 크고 복잡한 코드 조각이라는 것입니다. 우리가 자바가 훨씬 더 훌륭하여 크기와 복잡도의 절반으로 동일하게 할 수 있다고 가정하더라도 결과는 여전히 매우 크고 복잡한 코드입니다 (V8 등).

그 정도의 작업을 복제하기 전에 대부분의 사람들은 "우리 제품이 상당히 경쟁력이 있다고 생각합니다."보다 더 많은 확신을 원할 것이라고 생각합니다.

브라우저에 대해 사용자가 볼 수있는 기능 세트에서 시작한 다음 해당 기능을 사용하여 브라우저를 생성하는 가장 효율적인 방법을 결정하려고하면 "Java"가 " 자바 스크립트 " 역사는 다르게 일을했다면, 그것은 이유 아마 없다 없습니다 (이론적으로 적어도) 답의 일부하지만, 주어진 현재의 상황이 될, 그것은 아니다.

또한, 나는 그 변화의 가능성이 거의 없다고 본다. Oracle (또는 IBM)이 Java의 경쟁 입장을 유지하는 것이 Microsoft .NET과 비교하여 유용하다고 결정한 경우에는 거의 발생하지 않지만 .NET이 Java의 핵심 시장을 위협하기 시작하지 않으면 의심의 여지가 있습니다.

그외에, 당신이 상상할 수있는 모든 기능 세트 (자체적으로 기능으로 "순수한 Java로 작성"을 제외하고)는 브라우저를 Java로 완전히 작성하는 것보다 다른 방법으로 더 빠르고 쉽게 달성 될 수 있습니다.


1
HotJava 링크를 읽을 때 코에 낡은 책 냄새가납니다
MarioDS

2
또한 HotJava 시대에 Java는 사용 가능한 라이브러리, 개발자 경험 및 속도 (때로는 10-15 배 느림) 측면에서 약했습니다. 오늘날, 그것은 각 지역에서 상당히 반대입니다. 자바 프로세서는 내가 핫 자바는 단순히 B / C, Java 플랫폼이 좋은 충분하지 못했습니다 생각 (당신이 자바 프로세서에 자바 브라우저 씬 클라이언트? 윙크 말할 수있는) 지금도있다 다음을 .
Nick P

5

솔직히 전담 지식이 풍부한 팀이 Java로 고성능 웹 브라우저를 만들 수 있다고 생각합니다. 진짜 질문은 왜? 브라우저를 특정 언어로 작성하는 것은 실제로 기능이 아닙니다. Chrome은 빠르기 때문에 Chrome을 사용하거나 확장 가능하기 때문에 Firefox를 사용하지만 Java로 작성 되었기 때문에 JBrowser를 사용하지 않습니다. 진짜 문제는, 어떤 문제를 해결하려고합니까?

다음 질문은 JBrowser를 작성해야 할 이유가 있다고 가정하면 "Java를 사용하여 작업을보다 쉽게 ​​또는 더 어렵게 만드는가?"입니다. Chrome을 만들 때 Google은 매우 친한 Java 상점이라는 사실에도 불구하고 Chrome을 주로 C / C ++로 작성했습니다. 그들은 자바의 이점이 정시에 순이익을 얻지 못할 것이라고 믿었을 것입니다.


2

Nashorn (Rhino를 대체하는 JVM의 Javascript)이 Java 8의 일부로 JVM에 제공되면이 기능은 눈에 띄게 가능합니다. 그러나 다른 사람들이 지적했듯이 현대 웹 브라우저에는 끔찍한 것이 많으며 Java 응용 프로그램 내에서 탐색 기능을 호스팅 해야하는 경우 WebKit을 포함하는 것이 더 쉬워 보입니다 :-).


1

현재 최고 답변이 우수합니다. 그러나 Java로 무언가를 완전히 코딩 할 필요는 없다고 덧붙입니다. 다양한 상호 운용성으로 원시 소스를 Java 바이트 코드로 변환하는 도구가 있습니다. 그들은 종종 통역사를 만들거나 MIPS와 같은 JVM과 같은 표현을 디딤돌로 사용합니다. 주요 네이티브 라이브러리를 Java 바이트 코드로 변환하고 순수 Java 브라우저 소스와 통합하고 점차적으로 더 많은 라이브러리 코드를 순수 Java 소스로 구현하여 Java 브라우저 개발을 여러 단계로 나눌 수 있습니다.

이를 통해 안전한 JVM 내에 모든 것을 포함 할 수 있습니다. 그러나 효율성을 보장하는 엉덩이에 고통이 될 것입니다. 대규모의 사전 민첩 / OOP 레거시 애플리케이션을 점진적으로 리팩토링하는 데에는 선례가 있습니다. 또한 일부 구성 요소에는 이미 우수한 Java 구현이 있으며 노동력을 줄이기 위해 사용할 수도 있습니다.


0

나는 약간 편견이 있지만 여기에 간다. 나는 C / C ++ 설교자들을 좋아하지 않고, 거기에 훌륭한 엔지니어링 응용 프로그램이 있다는 것을 알고 있지만 그저 A 도구이며, 종종 인상을 받았습니다. 많은 사람들이 C / C ++를 언급하는 것보다 더 많은 해결책을 요구합니다. http://www.paulgraham.com/avg.html 전구 역설 참조). 사실을 보려고합니다 .Java는 빠른 C / C ++이지만 더 많은 메모리가 필요합니다. 또는 C / C ++만큼 빠른 Java 코드를 작성할 수 있지만 그 프로그램은 더 많은 메모리를 소비한다고 말하면됩니다. 우리가 이것에 동의 할 수 있기를 바랍니다.

생산성을 살펴보면 C ++ 솔루션에 비해 특정 문제 (예 : 엔터프라이즈 Java)에 대한 Java 솔루션을 비교적 쉽게 작성할 수 있습니다. 웹 브라우저는 완전히 다릅니다. 2/3 시장 요구 사항이 있습니다.

  • 거대한 사양, HTML, JavaScript 등을 준수해야합니다. 여기에는 2D 드로잉 API와 같은 문제가 포함됩니다. 또는 OS 시스템 호출 (도면 프리미티브)에서 텍스트 또는 글꼴 표시 (“렌더링”)로 가져 오는 방법. cairo (C)와 같은 라이브러리 및 gezira와 같은 다른 시도를 살펴보십시오 (www.youtube.com/watch?v=P97O8osukZ0, https://github.com/damelang/gezira )
  • 유창한 "느낌"을 가져야합니다. 즉, 특정 작업에는 ms 만 실행되어야합니다.
  • 그것은 매우 도전적인 오늘날의 '브라우저 전쟁'에서 경쟁하기 위해 독특한 경험을 형성하는 UI 개념을 형성해야합니다.

요약하자면, 가능합니다. 오늘날의 C ++ 증기선에 비해 거의 동일한 결과로 거의 모든 프로그래밍 언어로 브라우저를 만들 수 있습니다. 그러나 그렇게하려면 상당한 노력이 필요합니다. 나는 (수백만의) 얼마나 많은지 모른다. 나는 그것을 추측하고 싶지도 않다. 어쩌면 우리는이 결론을 얻을 수 있습니다 : 사람들은 고급 언어로 최적화하는 것을 좋아하지 않거나 C / C ++에서 최적화하려는 사람들을 얻는 것이 더 저렴 할 수 있습니다 (최적화 할 수있는 다른 언어 전문가들에 비해) 비슷한 수준).


2
답을 여러 단락으로 나누지 않았기 때문에 투표를 중단하려고합니다. 공백으로 텍스트 벽을 나누십시오.
길버트 르 블랑

2
그럼 난 모바일에서 쓰기, 내가 미안 모바일 인터페이스와 함께 할 수있는 최선입니다
AndreasScheinert

1
노트북에 갔다가 고쳤습니다.
AndreasScheinert

2
"또는 C / C ++만큼 빠른 Java 코드를 작성할 수는 있지만 그 프로그램은 더 많은 메모리를 소비 할 것입니다. 이에 동의 할 수 있기를 바랍니다." 아니요, 적어도 모든 경우에 해당되는 것은 아닙니다. Java를 사용하면 다양한 패턴의 메모리 할당에 대해 여러 개의 사용자 정의 메모리 관리자를 구현할 수 없습니다. 필요하지 않다고 결정할 때 배열 범위 검사를 해제 할 수 없으며 JIT가 필요하지 않을 때 인식하기를 바랍니다. 이러한 문제는 대부분의 프로그램에서 발생하지 않지만, 마지막 나노초마다 성능이 필요한 응용 프로그램에서는 중요 할 수 있습니다.
Charles E. Grant

1
가비지 수집에 대한 반복적 인 주장은 성능에 영향을 미칩니다. 동의합니다. 그러나 그것은 한 가지 측면 일뿐입니다.
AndreasScheinert

0

하드웨어 가속 OpenGL과 비교하여 소프트웨어 OpenGL을 실행하는 Windows 9x 시절의 개념과 비교할 수 있습니다. 웹 브라우저와 같은 것에 Java를 사용할 때의 문제점은 잠재적으로 더 많은 언어를 사용하여 더 적은 수의 언어로 가능할 수있는 많은 추가 시계주기를 사용할 수 있다는 것입니다. OpenGL의 개념이기도합니다. 작업을 완료 할 수는 있지만 처리에는 훨씬 더 많은 시간이 걸렸습니다.

그래서 가능합니까? 잠재적으로. 경쟁력이 있습니까? 그렇지 않으면, 고도로 최적화 된 플랫폼 종속 코드의 무언가가 상당한 속도 이점을 가질 것입니다.

이것은 단지 추측 일뿐입니다.


-1

Java로 작성된 Java 웹 브라우저의 타당성에 대해서는 잘못된 질문이있을 수 있습니다.

기존 브라우저의 대부분이 무료이며 기능이 풍부 할 때 바퀴를 다시 발명하고 본격적인 브라우저를 작성할 필요가 없습니다.

그것은 내가 (우리?) 찾아야 할 것은 쌓여있는 모든 쓰레기 (광고, 비디오, GIF)없이 웹 페이지를 읽을 수있을만큼 "뭔가"라고 말했다.

Google은 모든 광고 등의 주요 범죄자입니다.

HTML 3.2 구현으로 Java HTMLEditorKit을 사용하고 웹 페이지를 텍스트로 읽는 Java 브라우저를 작성하고 모든 자바 스크립트 코드, 스타일 코드, 링크, 메타 데이터 (자동으로 다른 자극 소스를 제거함) javascripts를 통해 설정된 일부 특수 문자 및 이미지 링크를 수정하려고 시도합니다. 하이퍼 링크 및 탐색 작업 LA Times, NY Times, Il Corriere.it, ElPais.es, LeMonde.fr과 같은 내용을 읽기 위해 제공합니다. Bing 및 Google 검색도 통과합니다. 결국 또는 요청하면 무료로 사용할 수있게됩니다. 많지는 않지만 시작입니다.


-4

물론 가능합니다. 그리고 그것은 또한 의미가 있습니다. 불분명 한 이유로 완전한 w3c 표준을 지원하는 브라우저는 없습니다. css3 지원의 일부에서 브라우저 회사는 표준을 지원하지 않습니다. -moz- * 및 -webkit- *는 표준의 일부가되지 않습니다. 따라서 모든 표준 호환 브라우저는이를 무시해야합니다. w3c의 가장 큰 실수 중 하나는 렌더링 사양이 완전히 부족하다는 것입니다. 따라서 동일한 표준 호환 웹 페이지는 그래픽 디자인의 악몽 인 모든 브라우저에서 다르게 보일 것입니다. 또 다른 w3c 실패는 속도 부족입니다. 5 년 간의 토론과 html5의 표준 초안 만? 그런 다음 조직은 심각한 혁신을 차단하고 있습니다.

우리는 w3c를 무시하고 사양을 무시하고 반년 안에 웹 애플리케이션 마크 업 언어에 대한 렌더링 사양과 보안을 염두에두고 커뮤니티 표준을 만들어야한다고 생각합니다. sgml을 HTML의 기초로 사용했을 당시에는 웹 응용 프로그램이 없었기 때문에 HTML은 웹 응용 프로그램 용으로 설계되지 않았습니다.


1
이것이 풍자라면 충분히 명확하게 나오지 않습니다. 또한 당신이 제안한 것에 필연적 인 함정을 지적하지 마십시오. 이것이 냉소적 이지 않다면 표준이 어떻게 만들어 지는지 공부하는 것이 좋습니다.

그렇습니다. 비열한 표현이지만 영어는 제 모국어가 아니며 초안 만 제공하는 데 5 년 이상이 걸리는 표준이 실제로는 표준으로 완전히 사용할 수 없기 때문에 비열한 표현이 아닙니다.
Vicky Ronnen

여기에 속하지도 않고 질문도 다루지 않습니다. 냉소적으로도.
scravy dec
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.