2010-11-23 5 views
4

자바는 "어디서나 쓰기"라고 생각했습니다.한 번만 쓰면 어디서나 쓸 수 있습니다.하지만 얼마나 걸리나요?

장기적으로 모든 프레임 워크로 트릭을 수행하는 방법은 무엇입니까?

나는 몇 년 전에 JSF 및 richfaces로 응용 프로그램을 작성했습니다. 브라우저는 진화하고 새로운 기능과 물론 새로운 버그를 도입했습니다. 이제 응용 프로그램은 여전히 ​​실행되며, 때로는 기본 라이브러리에서 자바 스크립트 오류가 표시됩니다.

기술적 인 '개선'으로 인해 실제로 추가 된 응용 프로그램을 추가해야합니까 (추가 할 사례가 없는지)?

편집 : 언급 한 응용 프로그램은 단지 예일뿐입니다. 공급 업체가 라이선스를 변경하는 경우에도 동일한 일이 발생합니다. (오라클은 VM에 대해 요금을 청구 할 수 있으며 오픈 VM은 애플리케이션 스택과 호환되지 않습니다.)

+1

커뮤니티 위키 체크 박스에는 어떤 변화가 있습니까? – stacker

+0

사라졌습니다 : http://meta.stackexchange.com/questions/67039/what-can-we-do-to-make-community-wiki-better/67192#67192 –

+0

JavaScript 오류에 대한 예를 들어 줄 수 있습니까? 뭐하는거야? 내 말은, 그들은 응용 프로그램의 기능에 영향을 줍니까? 아니면 그냥 짜증나 는가? – Jeremy

답변

4

우리가 "한 번 쓰기, 어디서나 실행"한다고 생각하더라도, 그것은 영원한 역 호환성과 완전히 똑같은 것은 아닙니다. 실용적으로, 당신은 미래 버전의 프레임 워크가 어떤 것을 변화시킬 것으로 기대해야합니다. 때때로 이것은 보장 된 행동 (가장 최악의 변화)을 제거하는 것이지만, 라이브러리의 미래 버전이 개발자가 아닌 구현 세부 사항에 의존 할 때까지 코드의 버그가 눈에 띄지 않게됩니다. 보장. 드물게 오래된 코드는 최신 버전의 새로운 버그를 나타낼 것입니다.

이상적인 세계에서는 보증 된 동작에만 의존하는 코드를 작성하고 보증이 제거되지 않으므로 유효한 코드가 계속 영원히 작동합니다. 이에 반하여 프로그램이 완전히 정확하다는 것을 증명하기가 어렵습니다. 언어/프레임 워크/라이브러리 개발자는 완벽한 호환성을 유지하면서 원하는 개선 사항을 추가 할 수 있는지 여부를 결정합니다.

인수를 얻으려면 호환성이 뛰어나므로 원본 API는 변경하지 않고도 충분히 견고하고 충분히 안정적이어야 생존 할 수 있습니다. 일치하지 않으면 호환되지 않는 변경이 이루어 지거나 API가 완전히 포기됩니다. 어느 쪽이든, 이전 버전을 실행하기 위해 멀리 떨어져 있지 않으면 프로그램이 더 이상 실행되지 않습니다.

트릭을 수행하는 방법에 대해 물어보십시오. 먼저 좋은 결과를 얻으려면 약간의 행운의 인터페이스 디자인이 필요합니다. 그렇지 않으면 확고한 의지와 "비즈니스 사례"(또는 비영업 동기) "오래된"버전을 무기한 지원합니다. 예를 들어, Python 3은 Python 2와 호환되지 않지만 Python 2는 여전히 적극적으로 업데이트로 지원되므로 오래된 Python 코드가 여전히 실행됩니다. C99는 C89의 몇 가지 기능 만 제거하고 다른 모든 기능이 실패하면 C89 컴파일러는 여전히 활발하게 유지 관리됩니다. 브라우저는 천 가지 이전 버전과 비표준 HTML 단점을 지원합니다. 나는 JSF와 richfaces가 그것들과 어떻게 비교되는지, 또는 클라이언트로부터의 "오래된"(또는 기발한) HTML/CSS/Javascript 동작에 대한 지원에 의존하는 페이지를 출력하는 정도를 알지 못한다.

그래서 적어도 잠시 동안은 일어날 수 있습니다. 그러나 웹에서 나간다는 것이 더 이상 안전한 브라우저에서는 사용할 수없는 IE6 기능이 있습니다. (샌드 박스 VM 또는 IE6을 마음에 들지 않는 컴퓨터에서 실행할 수 있다고 생각합니다.) 당신이 처음에 의지했던 것.독점적 인 브라우저 확장이 향후 버전에서 돌처럼 떨어질 것으로 예측 될 수 있습니까? 아마, 그 IE6 app-writers는 당시 적절한 표준을 사용하기를 원했을 것입니까? 항상 그런 것은 아닙니다. IE6에 관여하지 않은 사람들을 위해, 앱이 비슷한 함정에 빠지면 운이 없어집니다.

+0

이 놀라운 답변을 주셔서 감사합니다. 내 결론은 (귀하의 python/C 부분으로 인해)) 당신은 커다란 공동체를 가지고 있거나 자신을 공헌하기로되어 있습니다. 그것이 무료이기 때문에 저를위한 Thats 오케이. – stacker

0

자바 스크립트에 대해 언급했기 때문에 애플리케이션이 아니라 애플릿에 관한 것 같습니다. 또한 이것은 배치 된 페이지에서 자바 스크립트를 호출하는 애플릿입니다. 이 경우 정확히 순수 자바가 아닙니다. Runtime.exec()를 사용하여 플랫폼 종속 명령 줄을 호출 한 다음 운영 체제를 변경하고 응용 프로그램이 작동하지 않는다고 불평하는 것 같습니다.

아니면 올바르게 사용 사례를 이해하지 못했습니까?

0

프로그래밍 언어와 기술이 발전합니다. 웹 앱이 매우 기본이라면 크게 변경하지 않고도 업데이트를 수행 할 수 있습니다.

Java 기반 언어는 Microsoft 스택 언어보다 자주 업데이트되는 것으로 보입니다. 그러나 JSF 2는 이전 버전에 비해 몇 가지 큰 변화가 있었으며, Richfaces 3.x 앱은 Richfaces 4.x를 사용하려면 이전이 필요합니다.

해결 방법은 항상 업그레이드하지 않아도됩니다. 오래된 언어 (하나는 고전적인 ASP)로 작성되고, 배포되어 여전히 행복하게 운영되고있는 사이트가 많이 있습니다.

1

누구든지 "어디에서나, 영원히"실행할 것을 진지하게 생각할 수는 없습니다. 머지 않아 리눅스와 윈도우, 맥 오에스는 모두 쓸모 없게 될 것이고, 새로운 OS가 나오게 될 것이고, 아무도 그들을 위해 JVM을 작성하지 않을 것이기 때문에 당신의 자바 애플리케이션은 더 이상 운영되지 않을 것이다. (나는 옛날 MS DOS 게임을 가지고 있지만 멋지다고 생각했지만 Windows DOS 상자에서는 실행되지 않을 것입니다. 회사는 Windows 버전으로 출시되었지만 게임을 심각하게 재 설계했으며 겸손한 견해로 모든 것을 파괴했습니다. Bummer man.)

한편 새 버전의 상위 호환성은 대단한 일이지만 때로는 공급 업체가 너무 많은 문제가 있다고 판단합니다.

+0

+1 Windows 용 화면 모드가 더 이상 DOS 용으로 허용되지 않아서 필자가 쓴 '가상 현실'엔진에서 동일한 문제가 발생했습니다. – stacker

+1

@stacker : http://www.dosbox.com/을 사용해 볼 수 있습니다. DOS를 포함하여 전체 x86을 에뮬레이션하고 DOS 프로그램을 실행합니다. 당신이 말하는 "Windows"와 "비추천"과 같은 새롭고 신나는 개념으로 어지럽히 지 말라! –

+0

@Jessop : 이봐, 어쩌면 내가 아직 디스크가 있는지 볼 수있을거야. 이 Windows는 어쨌든 일시적인 유행 일뿐입니다. :-) – Jay

관련 문제