Java vs. C #-생산성 관점 [닫기]


34

Java를 사용한 경험과 C # 및 .NET을 사용한 경험이 많은 경우이 두 환경 간의 소프트웨어 개발 생산성 차이에 대한 귀하의 의견을 소중히 생각합니다. 고객 중 하나가 기존 소프트웨어 솔루션 교체를 고려하고 있습니다. 교체에는 약 생산성 차이에 따라 Java 또는 .NET을 선택하는 10 년에서 15 년의 근무 기간은 필요한 투자 및 출시 시간에 큰 영향을 줄 수 있습니다.

Java와 C # /. NET의 소프트웨어 개발 생산성 차이를 나타내는 정보를 제공해 주시겠습니까? 다음과 같이 답변을 받고 싶습니다.

내 경험은 X 년 동안 Java를 사용한 경험과 X 년 동안 C # /. NET을 사용한 경험을 바탕으로합니다. 다음을 고려하면 Java는 X보다 생산성이 C % .NET보다 높고 C # .NET 또는 C # /. NET은 X보다 생산성이 높습니다.


24
여기서 중요한 한 가지는 당신이 만들고 있는 것 같아요 . .NET은 일부 유형의 프로젝트에 적합하고 Java는 다른 유형에 적합합니다.
Øyvind Knobloch-Bråthen

4
어떤 종류의 프로젝트입니까? 당신이하려는 일에 사용할 수있는 라이브러리에 많은 것이 달려 있습니다. 언어면에서는 C #을 강력하게 선호하지만 .net이 모든 종류의 프로젝트에서 java보다 낫다고 주장하지는 않습니다.
코드 InChaos

7
IMO는 매우 중요한 전략적 결정이 있으며 프로그래머의 생산성에 전혀 의존해서는 안됩니다. 완벽하게 멋진 최신 Windows GUI를 원한다면 통계가 7 % 더 생산적이라고 주장하더라도 Java를 선택할 수 없습니다. Mono와 함께 제공되는 제한없이 진정한 크로스 플랫폼 제품이 필요하다면 C #이 더 좋은 구문을 가지고 있더라도 Java가 당신의 아기입니다.
user281377

2
@Edin : "엔터프라이즈 응용 프로그램"은 어떤 유형의 응용 프로그램인지를 잘 설명하지 않습니다 ... 데스크톱 전용, 클라이언트 / 서버 구성, 웹 서비스, 웹 사이트, 모바일 장치의 가능한 위성 응용 프로그램 등입니까?
awe

3
"JAVA"가 아닌 "Java"입니다
Mahmoud Hossam

답변:


17

내 경험은 Java 작업 경험 10 년 및 C # /. NET 작업 경험 3 년입니다. Java는 C # .NET보다 0 % 더 생산적입니다. 이는 백엔드 서비스 기반 애플리케이션 작성을 기반으로합니다.
C # /. NET은 사용자 응용 프로그램을 작성하는 데 Java보다 5 % 더 생산적 일 수 있습니다. 그러나 Java에서 거의 5 년 동안이 작업을 수행하지 않았으며 새로운 Netbeans UI 편집기가 격차를 좁힐 수 있습니다.

생산성을 높이고 싶습니까? CI (이상적으로 지속적 전달) 및 자동화 된 테스트. 주요 언어 / 플랫폼 / IDE에서 언어 / 플랫폼 / IDE를 선택함으로써 얻을 수있는 생산성은 상당히 작습니다.


Java에 대해 0 %를 의미 했습니까? 백엔드 서비스 기반 애플리케이션 또는 Java 전체에서 0 % 생산성이 향상 되었습니까? 그냥 확인 중입니다.
Jon Onstott

백엔드 응용 프로그램 (일부 규칙, db 액세스 및 그 기능 포함)을 작성하도록 요청하면 C #과 Java 모두에 대한 추정치가 동일합니다. Windows 최종 사용자 응용 프로그램을 요청한 경우 C # (WPF / XAML 및 바인딩을 통한 지원 MVVM)보다 Java에 대한 추정치를 약간 크게 만들었습니다 .Java의 수동 바인딩 및 UI 빌드보다 약간 더 생산적이라고 생각합니다 5 년전)).
mlk

"주요 언어 / 플랫폼 / IDE에서 언어 / 플랫폼 / IDE 선택으로 얻는 생산성은 상당히 작습니다."
Adam Jaskiewicz

3
마지막 문장의 경우 -1입니다. 모든 (실제) 문제 클래스마다 두 가지 범용 고급 언어를 선택할 수 있습니다. 여기에서 생산성이 100 %를 초과합니다. C #과 Java 중 하나를 선택하면 차이가 거의 없습니다 (물론 C #이 함수형 프로그래밍에 적합한 영역에서 훨씬 더 생산적이라고 주장하지만). C와 OCaml 중 하나를 선택하면 차이가 발생합니다.
back2dos

42

저는 5 년 동안 Java 및 C #을 사용하여 대학 및 Real World ™에서 프로젝트를 수행했습니다.

손을 쓰다 간결하고 구문 설탕을 사용하기 때문에 C #을 더 많이 사용합니다. 당신은 거의 찾을 수 없습니다Factory.GetFactory(OfFactory.GetFactory(Factory));C # 코드를 . 구문이 작고 간결하기 때문에 읽고 따라 가기가 더 쉽습니다.

어느 쪽이 더 생산적입니까? 프로젝트 유형에 따라 다릅니다.

Windows 용 데스크톱 응용 프로그램을 설계하고 있습니까? 그렇다면 강력한 IDE Visual Studio이기 때문에 C #이 최선의 선택이며 .NET Framework는 GUI를 매우 간단하게 만들 수 있습니다.

솔직히, 코드를 얼마나 장황하게 묘사했는지 기억하기 때문에 더 이상 Java를 사용하지 않아서 기쁩니다 (1 년이 지났습니다). 간단한 예는 예외 처리입니다. 코드가있는 경우 예외를 던져 당신은 해야합니다 가능한 모든 단일 예외를 차지하고있다. 이것은 사소한 코드를 20 라인 + 괴물로 빠르게 바꿉니다.

C #은 개발자가 결정해야 할 코드를 열어두기로 선택한 경우 손으로 들고 있지 않습니다.

C #은 또한 일년 동안 많은 기능을 추가하여 사용하기가 즐거워졌습니다. 람다, 델리게이트, 익명 함수 (라 루비), 당신이 따라갈 때 찾을 수있는 많은 좋은 것들.


3
나는 자바에서 uni의 점을 기억합니다. 강제 예외 처리. 예, 목적이 있었지만 코드 문서에서 메소드가 예외를 발생시키는 지 알려주고 수행 할 작업을 선택할 수 있습니다.
JonWillis

5
haha, 저는 자바 프로그래머이지만 예제 코드가 마음에 들었습니다.
척 스테판 스키

6
If your code can throw an exception you must account for every single exception possible.나는 이것의 단점을 보지 못합니다. 적어도 이것은 문제에 대한 인식을 높입니다 ...하지만, 단지 나일 수도 있습니다.
Bobby

4
확인 된 예외는 오류 처리 코드를 기본 구현의 일부로 작성하는 대신 나중에 생각할 때 사용하는 것입니다. 이것은 유지 관리 측면에서 상당히 많은 것을 의미합니다.

예상되는 상황 (파일이 존재하지 않음) 또는 예기치 않은 오류 (0으로 나눔)가 발생할 수있는 예외의 의미에 대한 의견 차이가 있다고 생각합니다. Java는 예외가 둘 다를 나타내야한다고 결정했으며 확인 된 예외와 확인되지 않은 예외가 모두 있습니다. 이것은 놀랍게도 논쟁의 여지가있는 기능입니다.
Tikhon Jelvis

23

저는 Java (1996 년 이후)와 .Net (2002 년 이후) 모두와 광범위하게 협력 해 왔으며 2010 년 에 Java전체적으로 가장 생산적인 환경이라는 점 에서 Java와 함께 가기로 결정했습니다 .

필자는 엔드 투 엔드 단위로 비용 / 자원 단위당 생성 된 비즈니스 가치 측면에서 소프트웨어 개발 생산성을 정의합니다. 초기 코딩 !!).

내 추론의 핵심 요소는 다음과 같습니다.

  • 구문은 생산성의 작은 요소입니다. Java는 확실히 장황하고 C # 구문을 선호하지만 그다지 중요하지 않습니다. 개발자가 유형 object.getSomeProperty()object.SomeProperty익명 익명 클래스를 사용 하든 람다를 사용하더라도 회사의 경쟁 우위에 큰 차이를 만들지 않을 것입니다.
  • 라이브러리 에코 시스템 은 매우 중요합니다. 최신 소프트웨어 제품을 개발하는 경우 많은 공통 구성 요소를 처음부터 개발하고 싶지는 않습니다. Java 에코 시스템은 오픈 소스 라이브러리 (특히 Apache, Google, Eclipse Foundation 및 RedHat / JBoss에서 개발 한 라이브러리)의 수와 품질 측면에서 분명한 이점이 있습니다.
  • 이식성 / 배치 유연성 -저렴한 Linux 클러스터를 포함하여 거의 모든 플랫폼에 JVM을 배포 할 수 있다는 것을 알고 있습니다. .Net을 사용하면 Windows 환경으로 제한됩니다. 클라우드 호스팅 옵션의 발전으로, 나는 이것이 매우 중요한 이점이라고 판단했습니다.
  • Scala와 Clojure 는 고급 언어 기능을 원하는 경우 JVM에서 개발할 수있는 실용적인 옵션입니다. Java로 개발하는 현실적인 옵션이지만 시간이 지남에 따라 Scala 또는 Clojure로 이동하는 옵션을 열어 두십시오. 어느 정도까지는 이것이 Java와 C #보다 앞서있는 "차세대"언어이므로 Java 플랫폼이 언어 혁신 측면에서 좋은 미래를 가지고 있다고 확신했습니다. (자바 7과 8은 유망 해 보였지만 정확히 숨을 참지는 못했습니다 ....)
  • 실제로 유지 관리 비용 은 Java에 비해 유리한 것으로 보였습니다. Java는 C #보다 더 간단한 구문을 사용하지만 더 자세한 표현을 사용하지만 사람들은 유지 관리가 더 쉬운 코드를 작성하는 경향이 있습니다. 또한 Java 세계는 .Net 세계보다 이전 버전과의 호환성에 훨씬 더 큰 비중을두고 있습니다. 이는 여러 해에 걸친 유지 보수 비용 측면에서 유리할 것입니다.
  • 공급 업체 독립성 – 과거에 공급 업체가 묶여 회사가 불타고있는 것을 보았을 때 Microsoft가 지배하는 .Net 세계가 아닌 비교적 개방적인 Java 에코 시스템을 사용하는 것이 유리하다고 생각했습니다. 예를 들어, SQL Server를 사용하는 대신 데이터베이스를 선택해야합니다 (도구 지원과 .Net 개발자의 일반적인 기술 집합을 통해 강력 함). 핵심 제품 투자 벤더를 독립적으로 유지하는 것은 현명한 장기적 움직임입니다. OpenJDK가 Java의 미래가 될 것이라고 판단하여 (올바로 밝혀 짐) 오픈 소스 플랫폼을 효과적으로 구축 할 것입니다.
  • 재능 -이것은 주관적이지만 .Net 세계보다 Java 세계 개발자의 기술적 능력에 더 깊은 인상을 받았습니다. 평균적으로 필자는 .Net 개발자는 Microsoft가 쉬운 도구 나 템플릿을 제공하는 모든 작업을 수행하는 경향이 있었지만 Java 개발자는 소프트웨어 엔지니어링 관점에서 올바른 솔루션을 찾는 데 더 많은 관심을 보였습니다. 이것은 완전히 주관적이며 특정 지역 / 시장에 따라 다르며 분명히이 패턴에 맞지 않는 많은 개인이 있었으므로 YMMV는 물론입니다.
  • 도구 는 거의 수평이었습니다. Microsoft는 Windows 개발에 특히 유용 할 수있는 훌륭하고 사용하기 쉬운 도구를 많이 가지고 있습니다. 그러나 나는 주로 자바 도구가 우위를 차지한다고 주장하는 서버 측 개발을 위해 노력하고 있습니다. 특히 Maven은 Java 생태계에서 매우 강력한 도구로 판명되었지만 .Net 세계에서는 그다지 능숙하지 않다고 생각합니다.

따라서 많은 복잡한 고려 사항이 있었지만 전반적으로 Java와 함께하기로 한 선택에 매우 만족하며 오늘도 같은 선택을 할 것입니다 (2012 년 초 현재).

아마도 .Net을 사용하는 유일한 경우는 Windows 전용 데스크톱 응용 프로그램을 개발하는 경우 일 것입니다 (.Net의 이점이 분명히 큰 곳).


9
+1 : 정답입니다! 생산성을 전체적으로 평가할 때 고려해야 할 많은 문제를 요약합니다. 일부 구문 설탕은 언어를 차갑고 "현대적인"것처럼 만들 수 있지만 생산성에 영향을 미치는 다른 중요한 요소도 있습니다.
Giorgio

3
이전 답변보다 더 포괄적 인 답변을 얻으려면 +1
NlightNFotis

1
Scala와 Clojure를 언급 한 이후 F #도 언급 할 수 있습니다.
Mauricio Scheffer

2
큰! 철저한 분석. 내가 찾던 것. :)
xebo

9

Java 10 년, C # 8 년

나는 자바를 위해 투표한다

  1. 공급 업체 잠금 없음 (앱 / 웹 서버를 Linux에서 Windows로, Unix로 변경할 수 있음)
  2. JasperReports JFreeChart, JSF 또는 Spring과 같은 타사 패키지의 상호 운용성 / 교환 가능
  3. 대부분의 혁신은 여기에서 발생합니다 (Log4j, Ant, Spring, Hibernate 등).
  4. 여러 응용 프로그램 서버 (A와 같은 종류)에서 작동합니다. JBoss, Tomcat, WebSphere, GlassFish, WebLogic 등

23
람다가없는 언어로는 어떤 "혁신"이있을 수 있습니까?
SK-logic

6
ASP MVC 이전에 다른 MVC 프레임 워크가있었습니다 (예 : MonoRail).
EricSchaefer

2
BTW : Lambdas / Closures는 언어 기능이며 프레임 워크에 대해 이야기하고 있습니다.
EricSchaefer

5
@ SK-logic에서는 O / R 레이어를 작성하기 위해 람다가 필요하지 않습니다.

2
@Giorgio, lambda는 GC를 사용하여 모든 언어에 완벽하게 맞습니다. 물론 C ++과 C에는 그 자리가 없습니다.
SK-logic

6

Java : 5 년 (비 연속)
C # : 7 년

나는 당신이 그런 식으로 생산성을 정량화 할 수 있다고 생각하지 않습니다. 그것은 개별 개발자와 프로젝트에 크게 의존합니다. 개발자가 알고있는 것을 사용하십시오.

편집 :
"일반적인 엔터프라이즈 응용 프로그램"을 다음과 같이 정의 하십시오 .

  • 다중 계층
  • 클라이언트 서버
  • DB 지원

Java와 C # 모두 그렇게 할 수 있습니다. 그것은 언어의 문제가 아니라 프레임 워크 / 런타임의 문제입니다. 다시 개발자가 아는 것을 사용하십시오. 그들은 새로운 언어와 새로운 틀을 배울 수 있지만 시간을 내야합니다. 데스크톱 앱의 경우에도 마찬가지입니다. 두 언어 모두 수많은 GUI 툴킷 / lib와 함께 사용할 수 있지만 모두 다른 접근 방식과 철학을 가지고 있습니다.


3
"이것은 개별 개발자에 크게 의존합니다."... 이것이 바로 두 세계에서 경험이있는 사람들과 프로젝트에서 의견을 원했던 이유입니다. ... 다른 기술로부터 어떤 종류의 프로젝트가 도움이 될지를 지적하는 대답이 필요합니다.
awe

4
그것은이 dev (일명 나)에 의존하지 않지만 프로젝트를 빌드 해야하는 개발자에게 달려 있습니다. 그가 어떤 종류의 프로젝트를 만들
려고했는지 밝히면

@eric 그것은 전형적인 엔터프라이즈 응용 프로그램입니다
Edin Dazdarevic

@Edin, Java에는 엔터프라이즈 기능이 내장 된 JavaEE 버전이 있습니다. 이 프레임 워크를 사용하여 애플리케이션을 빠르게 개발할 수 있습니다. 그러나 그것은 Magic에 의해 많은 것들을하지만, 당신은 그 규칙을 준수해야합니다. 그리고 문제가 발생하면 스택 추적이 크므로 예외 메시지가 유용하지 않을 것으로 예상됩니다. 이름이 잘못되었거나 DB가 꺼져있는 DB에 액세스하면 스택 추적이 너무 커서 초기 문제의 원인을 알 수 없습니다.
JonWillis

5
"일반적인 엔터프라이즈 응용 프로그램"이 있는지 확인하고 a 지점에서이 데이터를 가져 와서 사용자가 엉망으로 만든 다음 b 지점에 넣습니다. ;)
mezmo

6

Java (버전 1.1 이후부터!)부터 10 년 이상의 경험이 있으며 .NET (주로 C #)에서 7 년의 경험이 있습니다.

결정해야 할 결정이 있지만 대부분 몇 가지 시나리오로 분류해야합니다.

데스크톱 애플리케이션

데스크톱 응용 프로그램을 개발하는 경우 작업 할 주요 플랫폼을 사용해야합니다. Microsoft 플랫폼이 .NET을 사용하는 경우 모선 자체에서 개발 한 플랫폼보다 더 나은 솔루션은 없습니다. Linux 또는 다중 플랫폼 시나리오 인 경우 Java 또는 웹 기반 솔루션으로 이동하십시오.

웹 기반 애플리케이션

각각의 강점과 약점을 가지고 있기 때문에 결정하기가 매우 어렵습니다. 몇 가지가 있습니다 :

씨#

강점 : 현재 언어 및 플랫폼 / 프레임 워크에 새로운 기능을 구축하는 데 더 많은 추진력이 있습니다. 모든 것이 하나의 공급 업체에서 제공되며 분명히 이점입니다. 예를 들어 DevExpress와 같은 매우 강력한 구성 요소를 사용할 수도 있습니다 (자바는 DX 팀이 수년에 걸쳐 구성한 것과 거의 비슷하지 않으므로 생산성이 크게 향상됩니다).

약점 : 엔터프라이즈 응용 프로그램의 경우 .NET은 Java만큼 성숙하지 않습니다. Java와 마찬가지로 .NET에서 엔터프라이즈 소프트웨어를 구축하는 많은 공급 업체가 없습니다.

자바

강점 : 더 성숙하고 (이미 설명되어 있음) 도움을 줄 수있는 훌륭한 오픈 소스 프로젝트가 여러 개 있습니다. 소위 오픈 소스 프로젝트라고하는 여러 .NET은 실제로 Java 프로젝트의 복제본입니다.

약점 : Oracle은 Java를 소유하고 있으며 (JCP가 아님) 이는 확실히 고려해야 할 위험입니다. 그들의 의도는 명확하지 않으며 개인적으로 언어가 어디로 가고 있는지 개인적으로 좋아하지 않습니다 (많은 Java 개발자들이 비슷한 우려를 가지고 있음을 알고 있습니다).

서버 측 애플리케이션

기본적으로 웹 기반 응용 프로그램과 같은 주장이지만 UI Java에 대해 너무 걱정할 필요가 없기 때문에이 경우 더 강력 해집니다. 그러나 플랫폼이 주로 Windows .NET이라면 ​​더 나은 선택 일 수 있습니다.

전반적인 고려 사항

전반적으로 .NET은 Visual Studio 2010 (최고의 IDE를 손에 넣음), MS SQL, Entity Framework, IIS 등의 긴밀한 통합으로 인해 주로 이점이 있습니다. 이 모든 것이 생산성 향상에 큰 도움이되며,이를 입증 한 수많은 경험이 있습니다. 또한 .NET으로 전환 한 대부분의 Java 개발자와 함께 일하며 기본적으로 동일한 의견을 공유합니다.

또한 Microsoft가 그 어느 때보 다 강력하다는 것이 좋은 지적이라고 생각합니다. 따라서 10-15 년을 앞두고 보면 Java보다 .NET이 더 안전하다고 느낍니다.


4

나는 최근에 대학을 졸업 한 학생이지만 두 언어 모두에 대해 상업적 경험을 쌓았으며 총 3 년 동안 Java와 4 년 동안 C # .Net을 제공했습니다 (.net은 C #, VB.net, C ++ CLI, 그리고 J #과 F #).

이제 전체 선호도가 Java보다 C #이며, 둘 다 비슷한 구문을 가지고 있지만 Java의 크로스 OS 호환성보다 .Net 프레임 워크의 힘을 좋아합니다. 무엇을 구축해야하는지 강력하게 고려해야합니다. 이것은 데스크톱 응용 프로그램입니까? 다른 클라이언트, 다른 데스크탑, 모바일, 웹 사이트에 연결해야합니까?

** Stackoverflow의 질문이 종결되어 IDE에 대한 토론이 유실되었습니다. Java에는 많은 무료 IDE가 있지만 Visual Studio의 힘과 애드온과 비교할 수는 없습니다. 그러나 라이선스 당 Visual Studio 비용이 초과됩니다.

초기 영향을 미칠 수 있으므로 개발 팀이 이미 어떤 기술을 보유하고 있는지 확인해야합니다. 어느 것이 더 빠르거나 언어 / 프레임 워크에 숙련 된 사용자가 있습니까? 언어는 단지 구문이기 때문에 언어가 사용하는 도구와 프레임 워크이므로 언어를 고려해서는 안된다는 점을 생각합니다.


11
VS 라이센스 당 £ 1000? MSDN에 가입하면 훨씬 더 많은 소프트웨어와 도구를 사용할 수 있습니다. VS2010의 소매 가격을 지불하는 사람은 아무도 없을 것입니다.
James Love

6
@ Michael, VS 확장 기능을 작성하려고 시도한 적이 없습니다. 그러나 Visual Studio 용 다양한 플러그인을 사용하거나 시도했습니다. 여기에는 Resharper, CodeRush, Gallio, VisualSVN, AnkhSVN, testDriven.Net 등이 포함됩니다.
JonWillis

2
@ JonWillis는 거기에 많은 확장 기능이 있다고 동의했습니다. 또한이 목록 외에도 매일 매일 생산성 생산성 도구, CKS : Dev for SharePoint 및 WSPBuilder를 사용합니다. 이 갤러리 ( visualstudiogallery.msdn.microsoft.com )에는 수천 개가 있으므로 VS에 대한 확장을 더 많이 작성하는 것은 어렵지 않습니다 (실제로 전체 프레임 워크가 제공되며 커뮤니티 지원이 충분합니다) .
James Love

1
10-15 인용으로 계획된 프로젝트의 경우 VS 라이센스의 초기 비용은 땅콩입니다.
awe

1
MSDN이없는 Visual Studio 2010 Professional은 $ 550입니다.
Boris Yankov

3

구문과 도구의 유사성으로 인해 C # 또는 Java의 생산성 향상은 10-15 인제 근로 프로젝트에 큰 영향을 미치지 않습니다. 다음과 같은 문제를 자세히 살펴 보겠습니다.

  1. 프로젝트의 요구 사항은 무엇이며 이러한 요구 사항을 충족하는 언어 기능은 무엇입니까 (예 : 크로스 플랫폼 대 리치 Windows 클라이언트).
  2. 팀이 생산적으로 일할 수있게 해주는 프로젝트 접근 방식 / 방법론으로 무엇을 배치 할 수 있습니까?
  3. 중요한 프로젝트를 위해 가능한 최고의 팀을 고용, 유지 및 최대한 활용하기 위해 작업 환경에 대해 무엇을 할 수 있습니까?

제 생각에는 "(C #과 Java)의 생산성 차이가 필요한 투자와 시장 출시 시간에 크게 영향을 줄 수 있습니다"라는 의문의 전제라고 생각합니다. 나는 약간의 차이가 있을지 의심하지 않지만 중요하지는 않습니다.


3

Java 1.2에서 1.6까지, .NET 1에서 4.0까지, 약 10 년 이상의 전문적인 업무 경험 (그 전에 C / C ++ 프로그래머 임)부터 Java와 .NET을왔다 갔다했습니다.

한 번에 .NET 2.0과 마찬가지로 Java와 C #은 특히 백엔드 작업에서 거의 동일하다고 말할 수 있습니다. 언어 구성은 여전히 ​​매우 유사했습니다. Visual Studio의 WinForms 디자이너로 인해 .NET은 데스크톱 UI 프로그래밍에서 우위를 점했을 것입니다. Java는 주로 IIS에 얽매이지 않았기 때문에 웹 / 서버 분야에서 우위를 차지했을 것입니다.

이제 .NET 3.5 및 4로 넘어 가서 .NET에 생산성을 제공합니다. 이것은 JCP의 정치를 통해 변경을 추진하는 대신 MS가 언어 결정을 상대적으로 빠르게 결정할 수 있기 때문에 .NET은 훨씬 빠르게 진화하는 언어이기 때문에 이것은 주로 제 의견입니다. 큰 개선이있는 var키워드, Linq에, 확장 메서드, 널 병합 연산자의 전체 ??, dynamic그리고 아마도 더 많은 좋은 물건이 정말 부스트 생산성.

이제 프로젝트의 "가장 생산적인"언어는 거의 항상 대부분의 개발자가 가장 편안하고 경험이 많은 언어입니다. 학습 곡선은 항상 가장 큰 생산성 킬러입니다.


3

내가 주목 한 것 중 하나는 많은 C # /. NET 상점이 "여기서 발명하지 않은"태도를 가지고 있으며 모든 제 3 자 / 오픈 소스 라이브러리를 금지하는 반면 많은 Java 상점은 오픈 소스 라이브러리를 더 많이 사용한다는 것입니다. 또한 Java에 사용할 수있는 라이브러리가 더있는 것 같습니다. .NET에서 멋진 타사 라이브러리 (예 : NHibernate, NPOI, Spring.NET 등)를 보더라도 Java 라이브러리의 포트이므로 뒤에 있습니다. 이러한 혁신 중 많은 부분이 Java에 처음 등장한 후 .NET 포트가 만들어진 것 같습니다. 라이브러리 관점에서 볼 때 Java가 새로운 혁신적인 발견 측면에서 승리하는 것 같습니다.

여전히 Microsoft는 ASP MVC, LINQ 등과 같은 일부 공식 라이브러리를 만듭니다. 그러나 종종 ASP MVC와 마찬가지로 Struts, Spring MVC 등과 같은 타사 라이브러리는 이미 Java 용으로 출시되었으며 Microsoft는 모델 뷰 컨트롤러 웹 패러다임에 늦게 들어갔습니다.

물론, 이러한 라이브러리 중 다수는 많은 시간을 절약하고 생산성을 높여줍니다. 핵심 언어와 핵심 언어 C # 및 Java는 다르지 않으며 나에게 너무 가깝습니다. 써드 파티 라이브러리의 군대에 던져지고 규모는 확실히 자바쪽으로 기울어집니다. 여전히 오픈 샵에서는 많은 기울기가 균형을 이룹니다. 그것은 많은 .NET 상점이 여기에서 고안 한 태도를 갖지 않지만 많은 Java 상점은 작업을 수행하는 데 필요한 모든 것입니다 ... 이것은 내가 일하는 회사 내에서도 마찬가지입니다. Java 팀에는 많은 승인 된 타사 라이브러리 / 유틸리티가 있습니다 (관리로 인해). 또한 .NET을 사용하면 더 많은 좋은 것들이 무료가 아닙니다 (예를 들어, Microsoft Office 문서로 작업하려는 경우 NPOI 이전에는 [사무실 자동화 계산 제외]) 대부분의 솔루션이 무료가 아닙니다.


"여기서 발명되지 않았습니다". 어떤 근거를 바탕으로? 나는 C #과 Java를 혼합하여 일하고 있으며 IConverter를 만들고 문자열을 두 배로 변환하는 논리를 구현하는 것과 같은 Java 사람들로부터 더 큰 학대를 보았습니다.
George Silva

여러 가지 이유로 저는 Java보다 C #을 선호하지만, 기본 C #보다 "마이그레이션 된"Java To C # 라이브러리를 선호합니다. 일반적으로 실제 환경에서 더 잘 설계되고 테스트되고 적용됩니다.
umlcat

0

나는 나 자신 에게이 질문을 많이했다 : 어느 것이 낫다? C # 또는 Java?

나는 당신에게 조언을 드리겠습니다. 그리고이 조언은 나의 연구의 결론입니다 : 그들 중 어느 것도 더 좋고, 당신이 잘 아는 언어 만 있고, 당신은 많은 매혹적인 응용을 할 수있는 것이 가장 좋습니다.

한 언어를 사용하여 프로그래밍하고 자신을 많이 훈련시키는 방법을 배우십시오. 코드 작성에 완벽 해지면 다른 언어를 생각하고 나를 믿고, 케이크처럼 다른 언어를 배우게됩니다.

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