Java vs. C #-생산성 관점 [닫기] 년에서 15 년의 근무 기간은 필요한 투자

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

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

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



답변

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

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


답변

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


답변

저는 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의 이점이 분명히 큰 곳).


답변

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 등

답변

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

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

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

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

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


답변

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이 더 안전하다고 느낍니다.


답변

나는 최근에 대학을 졸업 한 학생이지만 두 언어 모두에 대해 상업적 경험을 쌓았으며 총 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 비용이 초과됩니다.

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