웹 사이트를위한 다른 클라이언트 측 스크립팅 언어가없는 이유는 무엇입니까? [닫은]


35

오늘날 브라우저에서 JavaScript와 일부 VBScript 만 지원하는 이유는 무엇입니까? JavaScript가 훌륭하다는 것을 알고 있지만 다른 프로그래밍 언어를 사용하여 다른 개발 스타일을 홍보 할 수있는 옵션이 없습니까?



1
귀하의 질문은 정확히 Google이 GWT를 만든 이유 입니다.
jhocking 2016 년

1
DOM API의 핵심은 여러 언어를 지원하는 것이라고 생각합니다. JS는 실제로이 과제에 매우 적합합니다. 그것은 아무도 비즈니스처럼 정상화되지 않으며 이벤트 중심의 패러다임에서 일류 기능이 거대합니다. 실제로 내려진 것은 아무도 MS가 그 결정을 내리기를 원하지 않았고 아무도 JS보다 더 나은 결정을 내리지 않았다는 것입니다. 또한 Java 애플릿은 정말 절름발이였습니다.
Erik Reppen

답변:


33

여러 언어에 대한 지원을 추가 할 필요가 없습니다. 해결책은 언어 구현자가 사용할 수있는 일반 바이트 코드를 표준화하는 것입니다. 그러나 현재 이에 대한 계획은 없습니다 (제안되었습니다).

Javascript를 기반으로 언어도 구현할 수 있습니다. Javascript는 다른 언어를 그 위에 구현할 수있을만큼 충분합니다. 그리고 이것에 대한 많은 예가 이미 있습니다.


3
+1-JavaScript는 다른 언어에 대한 추상화로 사용할 수있는 강력한 언어임을 지적했습니다. 클라이언트 측 C ++ 또는 Java를 실행할 Firefox 확장을 작성하는 것은 흥미로운 프로젝트입니다! <script type="text/cpp" src="test.cpp"></script>.
jmort253

2
@ jmort253, 기본 클라이언트를 살펴보십시오.
dan_waterworth

네이티브 클라이언트는 확실히 흥미롭지 만 모질라도 채택하지 않으면 견인력이 없습니다. 마지막으로 그들은 아직 그것을 취할 준비가되지 않았다 확인했다.
nkassis

1
나는 몇 년 전에 Gestalt를 발견 했습니다 : gestalt.codeplex.com Javascript 위에 다른 스크립팅 언어를 구축하는 좋은 예입니다.
Jim Schubert

2
다른 예 : Google Web Toolkit ? 자바가 자바 스크립트로 컴파일 됨
MarkJ

21

JavaScript는 사실상의 표준이며 1996 년 이래로 존재 해 왔습니다. 경쟁이 없기 때문에 표준이되는 것은 정확히 공평하지는 않지만 다른 언어가 포함되지 않은 이유 에 대해 많은 불만을 듣지 못했습니다.

다른 "표준"언어를 추가하면 모든 종류의 재미있는 작은 문제가 발생합니다.

  • 다른 언어와 어떻게 작동합니까?
  • DOM이 공유됩니까?
  • 두 언어로 작성된 스크립트가 여전히 작동합니까?
  • 라이브러리를 둘 다로 포팅

8
실제로 JavaScript는 Mozilla의 Gecko에서 사용되는 언어라고 생각합니다. IE에는 JScript가 있습니다. 대부분의 다른 브라우저는 ECMAScript 사양을 다소 따르는 것을 사용합니다. 이 모든 언어는 'JavaScript'라고하는 단순성을 위해 사용되지만 실제로는 다릅니다.
Mchl

1
동일한 바이트 코드를 생성하는 여러 언어가있을 수 있습니다. JVM 살펴보기 – Groovy, Java, Scala, Clojure, jRuby는 JVM 바이트 코드로 직접 컴파일 할 수 있습니다. 이런 식으로 그들은 동일한 DOM API를 공유하고 상호 운용 가능하게 만들 수 있습니다. JavaScript VM을 해석하기 때문에 구현하기가 기하 급수적으로 어렵습니다.
David Sergey

21

자바 스크립트 만 지원하는 브라우저 간의 불일치를 생각하십시오. 이제 더 많은 언어가 있다면 어떻게 될지 생각해보십시오.


5
예, 클라이언트 측 VBScript는 이미 있습니다.
ocodo

1
+1 각 기본 브라우저와 해당 버전에 대해 암기 할 다른 언어의 하위 집합이 있다면 우리의 머리가 폭발 할 것이라고 생각합니다. 좋은 대답입니다.
jmort253

4
이것은 nitpicking 일 수도 있지만 브라우저의 JavaScript [ECMAScript] 지원 은 실제로 처음부터 전반적으로 매우 일관되었습니다. 일관성이없는 것은 DOM (및 관련 메소드)의 구현입니다. 실제적이고 역사적인 관점에서 JS를 실제로 사용하는 것은 브라우저에서 DOM을 조작하는 것이기 때문에 두 가지를 분리하기는 어렵지만 서버 측 JS (NodeJS와 같은 것)의 등장으로 이것은 실제로 다소 중요한 구별이됩니다.
josh3736

대답으로 거의 정확하게 이것을 쓸 것입니다. 인터넷에는 따르지 않거나 지원되지 않는 충분한 표준이 있습니다. 우리가 가진 혼란스러워 엉망은 반뿐만 아니라 작동한다는 사실은 기적에 불과합니다.
Ryathal

1
조쉬가 맞아 JS가 어떻게 브라우저에 접근하고 접근 해야하는지에 대한 개별 브라우저의 아이디어에 연결하는 곳입니다.하지만 IE는 마침내 그 앞면에서 오랫동안 독점적 인 독점적 인 API 문제에 참석하고 있습니다. 브라우저가 파일 탐색기-jackasses에 연결하려는 MS의 운명적인 결정으로 인해 거의 모든 것이 최신 버전보다 뒤떨어집니다).
Erik Reppen

6

브라우저는 표준화되어야하므로 개발 한 것이 모든 브라우저에서 모든 곳에서 작동합니다.

여러 언어가 사용되는 경우 언어가 모두 매우 유사하게 작동해야합니다. 웹 개발자이고 일부 위치에서 지원되거나 지원되지 않을 수있는 언어를 선택할 수있는 경우 추가 두통이 발생합니다.

자바 스크립트는 매우 유연한 언어이며, 필수적이며, 기능적이며, OOP (프로토 타입을 사용한 후)가 될 수 있으며 해석됩니다. 이제 Chrome과 같은 괜찮은 엔진을 사용하면 좋은 일을 할 수 있습니다. 여분의 언어는 여기서 다시 설정하고 VBScript, IE 만 살펴볼 수 있습니다. 따라서 작성된 언어는 특정 브라우저와 플랫폼, 악몽에 묶여 있습니다.


2
여기서 중요한 점은 "Chrome과 같은 괜찮은 엔진"입니다. 가벼운 세금을내는 것은 다리가 부러진 것처럼 IE8조차도 절뚝 거리기 시작하지만 최신 버전의 Firefox 및 Chrome은 영원히 사용 한 이후로 비트를 놓치지 않고 건너 뜁니다.
Matthew Scharley

1
@Matthew Scharley : IE는 일반적으로 느리고 실제로 모든 버전에서 나빠질 것 같습니다. 그들은 게임을 시작해야합니다. 그렇지 않으면 게임에서 벗어날 것입니다. IE가 보유하고있는 유일한 이유는 OS가 포함되어 있기 때문입니다. 이제 그들은 처음 사용할 때 선택기를 올려 놓아야합니다.
Orbling

"그것은 OOP 될 수있다"... 그것은 이다 OOP! 상속은 OOP를 정의하는 것이 아닙니다. 개체 가 있습니다.
KaptajnKold

@KaptajnKold : 그것은 놀랍게도 학계에서의 논쟁의 문제입니다. JS가 객체를 가지고 있다는 점에서 JS가 OOP를 할 수 있다는 것에 동의합니다. 그러나 객체가 항상 과도하게 사용되는 것은 아닙니다. 프로토 타입 시스템은 일반적인 OOP 플레이버와는 다른 많은 이점을 제공하므로 "OOP 언어"의 표준 정의에서 추가로 제거됩니다. 대부분의 언어와 마찬가지로 사용 방법에 따라 다릅니다. 사용하면 OOP입니다.
Orbling

3

벤더는이를 브라우저에 구축하는 대신 자바, 플래시, 실버 라이트 등과 같은 복잡한 브라우저 플러그인을 구축하는 것을 좋아합니다. 이는 플랫폼 간 일관성을 보장합니다.


제어를 보장하는 것만 큼 크로스 플랫폼 일관성을 보장하는 것이 아닙니다. 당신이 플러그인을 제어하는 ​​것처럼 다른 사람에게 대답 할 필요가 없습니다.
jhocking 2016 년

더티 자바 스크립트를 빠르게 실행하는 데 어려움을 겪는 것에 비해 "고유적인"플러그인이 더 좋습니다. 나는 전체 브라우저 플러그인 다운로드에 대해 부정적인 생각을했지만 "일반적으로 구현 된 자바 스크립트"보다 확실히 더 개방적이다.
Milind R

2

그 이유 중 하나는 다른 브라우저 공급 업체가 표준 Javascript 구현에 동의하는 것이 사실상 불가능하고 Javascript는 적어도 웹 언어 관점에서 영원히 존재했기 때문입니다. 따라서 대부분의 사람들은 다른 클라이언트 측 언어를 생태계에 도입하고 모든 공급 업체가이를 지원하도록하는 것은 사실상 불가능하며 잠재적으로이를 가능하게하는 대부분의 사람들은 이미 Javascript 표준화 문제에 관여하고 있다고 생각합니다. 그들의 시간의 사용.


내가 말하려고하는 거의. 클라이언트 측 언어와 서버 측 언어의 중요한 차이점은 브라우저가 클라이언트 측 언어를 구현해야한다는 것입니다.
jhocking 2016 년

2

여기에는 여러 언어를 지원하면 웹 브라우저 빌더가 모든 언어를 준수하는지 확인하는 것이 매우 지루하다고 주장하는 몇 가지 응답이 있습니다. 나에게 이것은 잘못된 것 같습니다.

예를 들어 Java는 매우 잘 정의 된 표준입니다. 기본적으로 브라우저 DOM을 Java API로 노출하고 웹 브라우저 내에서 JVM (Java Virtual Machine)을 실행하기 만하면됩니다. 스크립팅 코드가 컴파일 및 서명 된 JAR 파일의 형태로 또는 JavaScript 소스 코드로 제공되도록 지정할 수 있습니다. 브라우저에서 JavaScript가 발견되면 (현재와 같이) 전용 인터프리터 또는 JVM 상단의 Rhino 를 통해 실행할 수 있습니다 . jar 파일이 발견되면 새 클래스 로더 및 보안 샌드 박스를 작성하고 Java 바이트 코드를 메모리에로드하여 실행합니다. 이는 기존 웹 페이지와 완전히 역 호환되며 브라우저에서 단일 스트로크로 JVM에서 실행되는 수십 개의 언어를 지원할 수 있습니다.

다른 장점 :

  1. JVM은 10 년간의 성능 향상의 이점을 얻었습니다. 이제는 매우 빠르고 안정적이며 성숙되었습니다. 해석 된 자바 스크립트보다 성능이 크게 향상 될 것이라고 확신합니다.
  2. 클라이언트 측 앱이 점점 더 복잡 해짐에 따라 Java 및 Scala와 같은 구조화 된 유형 언어의 이점이 증가합니다.
  3. 진정한 멀티 스레딩 및 멀티 코어 컴퓨팅에 최적화 된 컬렉션 라이브러리 인 Scala를 통해 액세스 할 수 있습니다.
  4. 브라우저 내에서 수천 개의 오픈 소스 Java 라이브러리를 사용할 수 있습니다.
  5. 브라우저는 openGL과 같은 라이브러리를 통해 고급 그래픽 및 그래픽 카드 컴퓨팅 기능에 액세스 할 수 있습니다.
  6. 클라이언트와 서버 측에서 Java를 실행중인 경우, 매우 압축 된 이진 객체 그래프 직렬화 = 빠른 웹 페이지로드 및 수행을 통해 클라이언트-서버 통신의 이점을 얻을 수 있습니다.

1
이미 JVM 코드를 실행할 수 있습니다. 그것은 자바 애플릿이라고 불렀습니다
Raynos

1

JavaScript가 웹 표준 언어로 더욱 발전 할 것이라고 믿습니다. 서버 측 JavaScript가 증가하고 있습니다. 서버에서이 강력한 언어를 구현 한 예는 다음과 같습니다.

  • POW 웹 서버 SJS -Firefox 확장 또는 XULRunner 응용 프로그램으로 실행되는 POW 웹 서버의 서버 측 JavaScript입니다. SJS는 데이터베이스에 연결하고 클라이언트 측 컨텐츠를 생성 할 수 있다는 점에서 Apache의 PHP와 비슷한 역할을합니다.

  • NodeJS- 이벤트 기반 모델을 사용하는 서버 측 JavaScript입니다. Google의 V8 JavaScript 엔진을 사용하여 빌드되었습니다 . NodeJS는 확장 가능한 네트워크 프로그램을 빌드하기위한 도구로 알려졌습니다. "Hello World"웹 서버는 단 6 줄로 작성 될 수 있습니다!

  • Jaxer- 모든 스크립트 블록을 runat="server"서버 측 JavaScript로 해석하는 JavaScript 서버입니다 . 전체 웹 응용 프로그램은 JavaScript로 작성할 수 있습니다.

  • Rhino-Java 용 JavaScript -Mozilla 는 Java 에서 실행되는이 서버 측 JavaScript 구현을 작성했습니다. 본질적으로 Java 용 Querces PHP , Jython, JRuby 및 JVM에서 실행되는 다른 많은 다른 언어 추상화와 유사한 개념 입니다. Rhino는 일반적으로 JavaScript를 Java에 내장하여 최종 사용자에게 스크립팅 도구를 제공하는 데 사용되지만 비즈니스 로직을 다른 언어로 다시 작성하지 않고도 클라이언트 측 코드를 서버로 이동하는 데 사용될 수도 있습니다!

  • JQuery Claypool- 서버에서 JQuery의 강력한 기능을 사용하는 서버 측 JavaScript 프레임 워크입니다. 아주 멋지다! 브라우저의 EnvJs 서버 측 JavaScript 구현을 사용하여 개발되었습니다.

  • EnvJs -Rhino 위에 구축 된 헤드리스 브라우저입니다.

이러한 많은 구현 및 프레임 워크가 보여주는 것은 커뮤니티 리더가 이미 JavaScript를 서버로 옮기기 시작한 JavaScript가 웹 개발에있어 강력한 힘이되고 있다는 것입니다. JavaScript는 매우 강력한 기능적 프로그래밍 언어이며 시간이 지남에 따라 계속 발전 할 것입니다.

요약하자면,이 단일 브라우저 언어를 서버로 이식하고 그 차이를보다 통일 된 방식으로 연결할 수있을 때 다른 언어를 브라우저로 이식하는 것은 모순되는 것처럼 보입니다.


JavaScript는 브라우저에 국한되지 않음을 지적한 +1
Gary Rowe

1

Haskel, Lisp 및 Python (아마 다른 도구)을 포함하여 다른 언어를 자바 스크립트로 컴파일하는 도구의 몇 가지 예가 있습니다. 따라서 해당 언어 중 하나로 작업하려면 그렇게 할 수 있습니다.

그리고 저는 대학의 교수 중 한 명이 Javascript로 체계 구현을 작성했다고 생각합니다. 당신이 계획을 좋아한다면 당신도 그렇게 할 수 있습니다.


0

사람들은 두 가지 방식으로 내장 다양성의 부족을 해결했습니다. 플래시 또는 자바 애플릿과 같은 플러그인 사용과 jquery 또는 Google 웹 툴킷과 같은 자바 스크립트를 "기계 코드"로 사용하는 레이어를 만드는 것입니다. 새로운 개발 스타일이 충분히 대중적이라면 사람들은 그것을 도입 할 방법을 찾을 것입니다.

자바 스크립트로 .net 런타임을 만들면 인기가 높아지고 특정 서클은 인터넷에서 귀하의 이름을 영원히 저주 할 것입니다.


웹 양식과 IE를 비난하십시오. 핫 포커로 웹 UI 개발자를 움켜 쥐는 것이 더 적습니다. 브랜드 연결에 좋지 않습니다.
Erik Reppen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.