Java가 C #을 따라 잡을까요? [닫은]


17

오늘 저는 어떤 언어 C # 또는 Java가 공부하기에 더 좋은지 묻는 질문을 게시했습니다. 나는 큰 대답을했다. 한 가지 사실은 아마도 Java가 이제 새로운 기능을 갖춘 C # 뒤에 있다는 것입니다. 나는 웹 링크를 보았고 C #이 가지고 있고 Java가 가지고 있지 않은 것을 대부분 지적했다.

그래서 당신에게 내 질문은 Java가 C #을 다시 따라 잡을 것입니까? 그리고 만약 당신이 5 년 안에 어디에 서 있을지 추측 할 수 있다면. 현재 누락되었을 수있는 모든 것이 있습니까? Java 7은 어떻습니까?


7
-1, 추정 및 가정. 제목이 "C # 뒤에있는 Java입니까? 그렇다면 제목을 어떻게 따라 잡을 수 있습니까?"로 변경되면 +1로 변경됩니까?
Nicole

2
Java와 C #이 Scheme을 따라 잡을 것인가? 익명의 퍼스트 클래스 함수, 클로저 및 연속을 얻으면 알려주십시오.
dietbuddha

5
@dietbuddha :의 코드를 쓰지 않는 것을 선호합니다 ). 대단히 감사합니다.
Josh K

1
@JoshK 당신은 오히려 그것을 채우고 싶습니다; 그리고}, 맞습니까? LISP는 모든 함수가 그것들을 사용하기 때문에 많은 괄호를 사용하는 것으로 보이며 많은 함수를 중첩시킵니다.
YuriAlbuquerque

답변:


32

언어 기능은 Java 및 C #을 선택하는 데있어 매우 작은 부분입니다. 궁극적으로 이들은 더 큰 J2EE 및 .NET 생태계의 일부입니다.

둘 다 자신의 강점을 가지고 있으며 향후 5 년 안에 더 커질 것입니다.


19
"언어 기능은 Java 및 C # 틱을 만드는 요소의 아주 작은 부분"에 대해 +1
Craige

1
예, API와 라이브러리는 여러면에서 훨씬 중요합니다.
Michael K

2
동의하지만 질문은 생태계에 관한 것이 아니라 언어에 관한 것입니다.)
Philippe

1
나는 매우 짧은 답변에 투표 +1을 정말로 싫어하지만, 당신은 여기에 뭔가 있습니다. 이 답변을 확장하는 것을보고 싶습니다.
Nicole

3
질문 : "어떤 언어 C # 또는 Java가 공부하기에 더 좋을까"와 "5 년 후 어느 곳에 서있을 것인가"는이 두 가지 측면이 언어보다 생태계에 더 의존합니다.
Shamit Verma

16

나는 오라클이 그림에 올 때까지 라고 대답 했을 것 입니다. 지난 6 년 동안 Java와 C #의 기능이 크게 향상 되었기 때문에 슬픈 일입니다.


2
오라클이 Java를 방해하는 이유는 무엇입니까?

2
나는 단지 회사 문화가 썬이 기능을 통합 할 때와 같은 민첩성을 가지고 있다고 생각하지 않습니다.
제시 C. 슬라이서

8
@Glenn, Oracle과 Google의 소송은 오픈 소스를 "받지"않으며 이는 대기업이 향후 개발을 위해 Java를 선택할 가능성이 적다는 것을 보여줍니다. groklaw.net/staticpages/index.php?page=OracleGoogle
Tangurena

오라클은 정확히 "자바를 조이는"것이 아니라 JVM 일 수 있습니다. 현재 BEA에서 JRockit과 Sun 용 HotSpot을 인수 한 두 개의 JVM 구현을 결합하는 프로젝트가 있습니다. 그들이 다가오는 동안 그들은 Da Vinci Machine 프로젝트를 완전히 배제했습니다.
vartec

2
나는 Oracle에 혼동되어 있습니다. 안드로이드 슈트는 일종의 꺼지지 만 리눅스 커널에 기여하며 Btrfs 파일 시스템의 주요 개발자입니다. 오라클은 Microsoft보다 "오픈 소스"를 더 잘 얻는 것으로 보이지만 그다지 말하지 않습니다.
jonescb

6

언어로서 저는 Java를 확장하지 않고 혁신을 상당한 속도로 추가하지 않습니다. 주로 최첨단에있는 오픈 소스 커뮤니티의 사람들이 Scala, Clojure, Groovy, JRuby 및 JPython

또한 이전 버전과의 호환성에 대한 Java의 약속은 언어 기능을 추가하는 것이 언어의 초기 시절보다 본질적으로 어렵다는 것을 의미합니다.


5

여기서 큰 물음표는 Oracle입니다. 썬은 지난 반 십여 년 동안 자바의 속도를 늦췄습니다. Java 커뮤니티에서 많은 사람들의 희망은 Sun이 Java를 분사하거나 많은 자원과 노력을 기울이는 사람에게 Java를 판매하는 것이 었습니다. 오라클이 확실히 그렇게 할 수는 있지만, 자체 이익을 가진 많은 그룹을 가진 대기업입니다. 제 생각에는 오라클이 Java를 정체시키고 주로 특허 소송 도구로 사용할 것입니다.

아마도 그들은 대량의 돈을 위해 구글에 그것을 팔아서 모두가 행복 할 것입니다. 엔지니어와 소프트웨어 디자이너보다는 회의실과 변호사의 손에 달려 있습니다.

좋은 점은 개선이 없어도 Java는 좋은 언어이며 주변 환경이 좋습니다. 개인적으로 C #과 .net 세계를 선호하지만 Java는 여전히 훌륭한 선택입니다. 앞으로는 시간이 알려지지 만 지금은 Java가 전혀 나쁘지 않습니다. (날짜와 시간 라이브러리는 제외 ... 와우, 추악하고 지저분한 라이브러리는 없습니다)


1
있습니다 타사 라이브러리 이제 날짜 / 시간 문제를 극복하기는.
Michael K

1
오라클은 PL / SQL과 함께 Java를 데이터베이스 내부에있는 프로그램의 언어로 최소 10g 이상으로 사용했습니다. 오라클은 Java를 많이 사용합니다. 이것이 내가 좋아하는 방향으로 Java를 가져갈 것인지의 여부는 의문의 여지가 있지만 그것을 죽이지 않을 것입니다.
David Thornley

4

따라야 할 것이 없으므로 질문은 의미가 없습니다.

Java가 C #을 정확하게 복제하지 않는다고해서 어떤 식 으로든 "열등"하다는 의미는 아니며 단지 다릅니다. C #이 Cobol과 "일치"할시기를 물을 수도 있습니다.


23
동의하지 않습니다. C # 및 Java는 C # 및 COBOL보다 훨씬 많은면에서 유사합니다. 언젠가 "C #은 Java가되어야했던 것"이라고 읽었습니다. 요약하자면, C #과 Java가 직접 경쟁하고 있다고 생각합니다. 두 가지 모두와 함께 일하면서 Java의 많은 C # 기능이 있지만 다른 방법은 아니라고 말해야합니다.
Philippe

C # 또는 Java를 사용할 수있는 상황을 찾으셨습니까? 즉, 개발자가 선택할 수있는 상황입니다. 일반적으로 상점에는 이미 선호 / 편견 / 편견이 있으며 동일한 생태계의 언어간에 선택이 가능합니다. 예 : 자바와 스칼라 사이 또는 C #과 F # 사이
Shamit Verma

2
C #이 내린 모든 디자인 결정에 동의하지는 않지만 Java와 마찬가지로 C ++ 대체를 의도적으로 설정했으며 이전의 Java 예제를 사용하여 의도적으로 Java가 생략 한 중요한 기능을 추가했습니다. 따라서 이러한 기능이 훌륭하다고 생각되면 Java는 C #을 "잡아 내야"합니다. 특히, 객체 지향 객체가 부풀어 오르지 않도록 인라인 객체를 만드는 기능이 있습니다. 대리인은 라이브러리 데이터 구조로 구축 할 수 없다는 것이 아니라 내장 된 새로운 기능입니다. 둘 다 C ++을 따라야한다고 말하고 싶습니다!
Dov

@Philippe, 그의 반대 사례에 얽매이지 마십시오. 그는 "C #은 언제 Java를 따라 잡을까?"라고 쉽게 말할 수있었습니다. 그의 요점은 여전히 ​​Java가 C # 뒤에있는 객관적인 이유가 없다는 것입니다. 그것은 모두 개인적인 취향입니다.
jonescb

아무도 복제에 대해 이야기하고 있지는 않지만 C #에는 Java가 NOW 구현을 고려하고있는 필수 기능이 있습니다 (예를 들어, 추악한 객체 구현으로 에뮬레이트되는 람다).
YuriAlbuquerque

4

C # 또는 Java가 다른 것보다 앞서 있는지에 대한 문제는 논쟁의 여지가 있지만 한 언어의 언어 기능에 중점을 두는 대신 언어를 발전 시키는 데 관련된 것에 중점을 둡니다 . 내가 누구도 논쟁하지 않을 것이라고 생각하는 한 가지 사실은 다음과 같습니다. Java가 C #보다 오래되었습니다.

언어 작동 방식 변경과 관련된 문제 :

  1. 이전 버전과의 호환성을 깨 뜨리면 많은 개발자를 화나게합니다.
  2. 개발자를 화나게하면 더 나은 언어를 지원하는 다른 언어로 넘어갑니다. 따라서 언어를 계속 사용할 이유가 없습니다.
  3. 자바는 언어를 시장에 내놓으라는 압력으로 초기에 일부 디자인 결정을 내렸다. 희망은 돌아가서 일부 공백을 채우는 것이 었습니다. 관리자가 첫 번째 요점을 위반하고 싶지 않기 때문에 이러한 결정은 여전히 ​​언어를 괴롭 힙니다.
  4. 자바는 많은 새로운 영토를 습격했으며 가비지 수집 언어를 진지하게 받아 들일 수 있으며 대부분의 사람들에게 충분한 성능을 제공한다는 사실을 단 한번도 입증했습니다.
  5. C #은 나중에 들어 와서 Java가 우연히 겪었던 많은 교훈을 배웠으므로 포인트 3 때문에 Java의 기술적 한계를 피할 수있었습니다.
  6. 새로운 언어 기능은 실제 문제를 현명하게 해결해야합니다. 언어를 추가하려는 언어의 맥락에서 모든 언어 기능이 적합한 것은 아닙니다. 이것이 유사 함에도 불구하고 Java와 C #은 계속 다른 언어가 될 것입니다.

그렇다면 C #에는 Java보다 더 많은 언어 기능이 있습니까? 나도 그렇게 생각해. 그들은 유용합니까? 나도 그렇게 생각해. 이것이 C #이 Java보다 낫거나 성숙하다는 것을 의미합니까? 동의하지 않습니다. 그들은 다르고 평범하며 단순합니다. C #에는 Java 기능이 모두 없으므로 Java에는 C #의 기능이 모두 포함되지 않습니다.

Java의 기능 중 하나 인 Windows에서 프로그램을 작성하고 Unix 또는 Mac에 배포하는 기능은 Microsoft의 지원에 의해 직접 발생하지 않습니다. 왜 물어? 마이크로 소프트가 악하기 때문이 아닙니다 (실제로 관심이 없는지 여부). 썬이 결코하지 않은 교훈을 배웠기 때문입니다. 쓰기 실행은 운영 체제와 하드웨어를 상용화하는 어느 곳에서나 실행됩니다. 운영 체제 판매로 돈을 버는 것에 관심이 있다면, 사소한 교환으로 응용 프로그램 작업을 수행하기가 쉽지 않습니다. 그렇게하면 항상 저렴한 옵션이 있기 때문에 운영 체제에서 이익을 얻을 수 없습니다.


MS가 Mono를 실행하지 않는 것이 왜 중요합니까? 모노는 정말 잘 작동합니다. 과소 평가하지 마십시오.
Kugel

Mono에 대한 발굴은 아니지만 모든 .NET API가 직접 지원되는 것은 아닙니다. 이들이 진전을 이루고 있고 꽤 먼 길을 왔지만 특히 데스크톱 응용 프로그램에는 한계가 있습니다. Mono가 얼마나 가까이 왔는지 또는 합법적으로 Winforms 또는 WPF를 구현할 수 있는지 확실하지 않습니다. 그러나 엄격하게 서버 측 작업을 위해서는 호환 가능하다고 확신합니다. 최근에 살펴 보지 않았습니다.
Berin Loritsch

"Windows에서 프로그램을 작성하고 Unix 또는 Mac에 배포 할 수있는 기능은 Microsoft의 지원으로 직접 발생하지 않습니다"
JoelFan

내가 답을 쓸 당시에는 그렇지 않았습니다. 그래서 C #은 Microsoft가 Mac과 Unix에서 작동하는 런타임과 라이브러리를 작성 했습니까? 모노는 마이크로 소프트가 직접 개발 한 것이 아니며 일부 마이크로 소프트 개발자가 작업하고있을 수도 있습니다. Linux에서 작동하는 WPF를 기반으로 한 데스크톱 앱에 대해서는 여전히 의문의 여지가 있습니다. 서버 측만 정상일 수 있습니다.
Berin Loritsch

1

자바는 실제로 C 나 C ++보다 새로운 "기능"이 필요하지 않습니다. 객체 지향 개발을 위해 잘 설계된 언어입니다. 추가로 광범위한 작업을 수행하기위한 라이브러리를 만들 수 있습니다. C #도 마찬가지입니다. 대부분의 기능은 언어가 더 많은 일을하도록 추가되고 있습니다. 개인적으로 나는 대부분의 기능이 필요하지 않다고 생각합니다 .OO에서 포인터는 하드웨어 수준에서 작업하지 않는 한 정말 보풀이 많습니다 (이 시점에서 C와 같은 것을 사용하는 것이 좋습니다). 또한 VM에서 실행하면 불가능하지는 않지만 하드웨어에 직접 액세스하기가 어렵습니다.

유닉스는 가지 일을 잘 수행하는 모듈을 만드는 경향을 시작했습니다 . Java와 C # 모두 기능에 약간의 영향을 미치고 있다고 생각합니다 . 프레임 워크와 비슷한 거대한 다목적 "언어"보다 쉽게 ​​확장 가능한 코어를 만드는 것이 좋습니다. 에 , 자바는이 요구 사항을 더 나은 C #을보다 더 적합합니다.


7
적절한 람다가없는 언어는 사용 가능한 언어가 아닙니다. 하나의 기능이 Java에 추가되면 나머지 인수에 동의합니다. 그렇지 않으면 Java는 전혀 확장 가능하지 않으며 거의 ​​사용할 수 없습니다.
SK-logic

2
@Craige Personally (의견) 나는 구문 기능을 좋아하지 않습니다. 나는 언어가 방해가되지 않기를 원합니다.
Michael K

1
@ 마이클-나는 구문 기능이있는 언어와 당신의 방식에 맞는 언어 사이의 연결을 그리는 데 실패합니다. 언어에 기능이 있다고해서 반드시이를 사용해야한다는 의미는 아닙니다. 예를 들어 C #의 getter 및 setter 메소드를 사용하십시오. 시간의 90 %를 사용하면 수백 줄의 중복 코드를 작성하지 않아도됩니다. 그래도 원하는 경우 직접 작성할 수 있습니다.
Craige

1
@Craige, 언어에 기능이 있다면 도구 는 적어도 그 기능에 대해 알아야합니다. 그리고 Java 생태계의 힘은 주로 도구에 있으며, 이는 언어 최소한의 단순성 덕분에 가능합니다.
SK-logic

1
@ SK, 나는 람다가있는 언어를 사용할 수 없다는 것을 어떻게 이해할 수 있는지 이해하지 못합니다. C에는 람다가 없으며 C ++은 C ++ 0x로 가져오고 사람들은 수십 년 동안 이러한 언어를 사용해 왔습니다. 명령형 프로그래밍을 무효화하지 않는 기능적 프로그래밍을 선호하기 때문입니다.
jonescb

1

C #이 추가하는 많은 기능에는 아무런 문제가 없지만 언어를 변경하는 속도를 고려할 때 Mono가 계속 유지하는 것이 불가능하지는 않지만 의식적으로 어렵게 만들고 있습니다. 그렇다면 C #이 배포 할 수있는 시스템 범위 측면에서 Java를 따라 잡기를 기다리고 있다고 말합니다. Windows에서만 실행하는 것만으로는 충분하지 않습니다.


0

토론 포럼을 시작하지는 않지만 Java는 C #보다 오래 전에 여기에 있었고 C #은 복제보다 java처럼 보입니다.

귀하의 질문에 대한 답변 : Java와 C #은 다른 언어이므로 해당 기능으로 만 비교할 수는 없습니다. Java로 할 수있는 일은 C #에서는 불가능하고 그 반대도 마찬가지입니다.

마지막으로 이것은 Windows 대 Linux 주제를 시작하는 것과 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.