문제

사무실 직원의 일부 변화로 인해 C# 전문 지식 수준이 급격히 떨어졌으며 이제 더 많은 Java 개발자가 있습니다. Higher Ups가 C#에 작성된 기존 .NET 프로젝트를 Java 세계로 옮기는 것을 고려하고있는 시점에 도달했습니다.

명백한 문제를 제외하고 처음부터 완전히 시작합니다 이 회사가 .NET C#에서 Java 로의 프로젝트에 대한 성공적인 개발 이동을 달성 할 수있는 가능한 방법은 무엇입니까?

도움이 되었습니까?

해결책

고려해야 할 사항은 다음과 같습니다.

  • 이 큰 프로젝트입니까? 그렇다면 C#을 고수하십시오.
  • 이 중간 크기의 프로젝트가 구성 요소가 있습니까? 아니오라면 C#을 고수하십시오.
  • 이 작은 프로젝트는 Windows에만 배포되어야합니까? 그렇다면 C#을 고수하십시오.
  • 이 오래된 소스 코드입니까? 그렇다면 C#을 고수하십시오.
  • Windows OS 특정 API를 사용하십니까? 그렇다면 C#을 고수하십시오.
  • Java 상대가없는 제 3 자 API를 사용하십니까? 그렇다면 C#을 고수하십시오.
  • "Deep"(데이터 바인딩, 사용자 컨트롤 등)에서 .NET을 사용하십니까? 그렇다면 C#을 고수하십시오.
  • 마이그레이션 시간은 새/변환 된 C# Guys를 얻는 것보다 더 수용 가능합니까? 아니오라면 C#을 고수하십시오.
  • 프레젠테이션을 바꿀 Java 프레임 워크를 사용하려면 최종 사용자가 변경 사항을 수용하지 않을 것이라고 생각하십니까? 그렇다면 C#을 고수하십시오.
  • 광고를 점검하십시오

변환하기로 결정한 경우 :

  • 구성 요소에 따라 이동하십시오
  • 레이어 당로 이동하십시오
  • 많은 테스트가 있습니다
  • 마이그레이션에 도움이되는 도구가 있는지 확인하십시오 (그러나 작은 도움이 될 수 있음)

다른 팁

Brian과 Eric의 의견을 더하기 위해 Java 개발자를 위해 C#을 집어 올리는 것은 내 의견으로는 간단해야한다고 말할 것입니다. 그것들은 개념적으로 매우 유사한 언어이며 Java 개발자가 C# 기술을 얻도록 훈련시켜 마이그레이션 프로세스의 번거 로움에 빠지지 않도록 제안합니다.

나는 Joel의 견해를 구독합니다 총 재 작성은 거의 항상 실수입니다. 다른 포스터는 다음과 같습니다. C#과 Java는 유능한 Java 개발자가 몇 주 또는 몇 달 안에 C#에서 유능해질 수있을 정도로 유사합니다. 그것은 그들이 전문가가 될 것이라고 말하는 것이 아닙니다. 더 오래 걸리지 만 프로세스를 안내 할 수있는 C# 개발자가있는 한 괜찮을 것입니다.

그러한 전환이 응용 프로그램에 대한 세부 사항을 모르면 그러한 전환이 좋은 또는 나쁜 생각인지에 대해 언급하기는 어렵습니다 : 크기, 응용 프로그램 유형, 산업 등.

겸손한 견해로는 그런 스위치에 대해 매우 회복 될 것입니다. C#은 이제 Java보다 훨씬 더 현대적인 언어입니다. 그리고 나는 이것을 10 년 동안 (1.0.2/1.1 일 이후) Java 개발자였던 사람으로 당신에게 말합니다.

그것은 Java가 나쁘다고 말하는 것이 아닙니다. 그렇지 않습니다. Sun은 구름이 매달려 있으며 최근 몇 년 동안 플랫폼을 앞으로 나아갈 수 없거나 무능한 것을 보여주었습니다.

관련된 언어에 관계 없이이 회사의 관리는 미쳤다. 사소한 응용 프로그램 이외의 경우 올바른 언어로 된 기술로 한 사람을 고용하는 대신 전체 코드 기반을 처음부터 처음부터 다시 작성하는 것이 경제적으로 합리적 일 수 있습니까? 이것은 잘 알려진 문제가있는 사업입니까? 너무 많은 여분의 현금입니까?!

기존 코드가 얼마나 오래 개발 되었습니까? 간신히 시작되면 이것을 이해할 수 있습니다. 릴리스가 보이고 활성 사용자가 있다면 절대 그것을 버리는 것이 합리적입니다. 올바른 기술로 C# 코드를 스타트 업에 기부했다면, 그들이 당신을 얼마나 많이 시작했는지 생각해보십시오.

.NET 프로젝트를 Java로 변환하기 전에 전환 프로젝트의 일원이었던 모든 Java 개발자는 C#을 배웠을 것입니다. 따라서 더 이상 Java로 변환 할 필요가 없습니다 (전환시 생성 된 모든 Java 코드를 버릴 수 있습니다). 이제 Java와 C#을 모두 수행 할 수있는 개발 팀이 있기 때문입니다. 문제 해결됨. :디

이미 분리되어 있거나 서비스 지향 아키텍처를 사용하는 구성 요소가있는 경우 한 번에 하나의 구성 요소를 마이그레이션 할 수 있으며 (각 개별 구성 요소가 다시 작성되는 경우) 구성 요소가 동일하게 사용하여 서로 대화 할 수 있습니다. 상호 운용 가능한 네트워크 프로토콜. 아마도 우리가 말하는 앱 유형에 따라 다릅니다.

당신이 가지고 있는지 확인하십시오 수많은 테스트, 그러한 마이그레이션은 당신이 최소한 기대되는 곳에서 물을 것입니다.

생산에 더 많은 .NET 또는 더 많은 Java 응용 프로그램이 있습니까? 이미 .NET 서버 및 응용 프로그램에 대한 상당한 투자가 있다면 Java 개발자가 .NET으로 이동하도록 자원 봉사자에게 요청하지 않겠습니까? 언어와 구문은 매우 유사하므로 어려운 부분은 프레임 워크를 배우는 것이며, 모든 시간을 UI 개발하는 데 모든 시간을 소비하지 않는 한 프레임 워크를 배우는 것은 어렵지 않습니다.

우리 사무실에는 필요에 따라 Java와 .NET 사이를 오가는 많은 훌륭한 개발자가 있습니다.

경영진에게 증명하려면 항상 ROI와 숫자 측면에서 대화해야합니다. 이러한 애플리케이션을 이동하면 QA 리소스가 엄청나게 많이 걸리며 다른 프로젝트 나 새로운 개발이 중요하기 때문에 우선 순위가 떨어지면 쉽게 뒷좌석을 차지할 수 있음을 보여줍니다.

나는 그들에게 타임 라인, ROI, 관련된 일, 관련된 돈 등을 보여 주었을 때 성공했습니다.

이제 실제 시점에 도달하면 Java 개발자가 Microsoft Technolgies에 대한 근본적인 정신적 차단이 없다면 C#을 지원할 수 있다고 생각합니다.

살펴보십시오 net2java, 코드를 C#에서 Java로 변환하는 데 도움이되는 푸 포트. 나는 그것이 완벽하다고 의심하지만, 그 작업에서 많은 드 루게를 제거하는 한 가지 방법으로, 호환되지 않는 프레임 워크 호출과 언어 기능의 꼬임을 고려해야합니다.

이 작업을 마치면 작업은 다른 대규모 마이그레이션 프로젝트와 같습니다. 테스트, 테스트 및 테스트. 단위 테스트, 시스템 통합 테스트, 최종 사용자 테스트. 단위 테스트를 제외하고 원래 애플리케이션과 함께 사용한 이미 제자리에있는 테스트를해야하지만 여전히 관련이 있습니다.

이 작업을 수행하기로 결정한 경우, 시나리오를 폭포 전환에서 점진적인 마이그레이션으로 변경하기 때문에 기본적으로 동일한 애플리케이션에서 C#과 Java를 혼합 할 수있는 하이브리드 접근 방식의 혜택을 누릴 수 있습니다. 여기서 나는 두 가지 가능성을 알고 있습니다.

1) IKVM (http://www.ikvm.net/) .net-runtime에서 Java 코드를 실행할 수 있습니다. 이를 통해 Java 코드는 C# 코드를 호출 할 수 있으며 그 반대도 마찬가지입니다. 그런 다음 C# 코드 개발을 동결하고 기능적 애플리케이션을 유지하면서 수정 된 기능을 Java 부분에 천천히 추가 할 수 있습니다.

2) 메인 소프트 (http://dev.mainsoft.com/default.aspx?tabid=130) .net-bytecode를 Java Bytecode로 컴파일 할 수 있습니다. 무료 입력 버전이 있습니다. 제품에 대한 경험은 없지만 Java 만 사용할 수있는 플랫폼에 크게 광고합니다.

저는 Java 전문가가 아니지만 C# 팬인 Java 코드를 사용한 경험에서 다음은 가능한 두통 중 일부입니다.

  • 제네릭은 Java 및 C#에서 다르게 구현됩니다.
  • 권투/Unboxing 동작은 Java와 C#간에 다릅니다.
  • Java 클래스 이름 지정 컨벤션 + 로트 C# 생성 코드
  • 문자열 처리 (예 : 유니 코드/ASCII 문제)는 포팅되는 Java/C# 코드의 품질에 따라 문제가 될 수 있습니다.

개인적으로, 나는 처음부터 글을 쓰는 것이 전혀 나쁜 생각이라고 생각하지 않습니다. 이미 작업 아키텍처가 있기 때문에.

나는 아무도 이주를 거부한다는 아이디어조차 제안한 것에 대해 다소 놀랐다.

나는 C# 개발자가 Java (또는 그 반대)로 전환 할 수 있다고 생각하지 않습니다. 적어도 하나의 기술 스택을 마스터하는 데 많은 시간, 운동 및 열정이 필요합니다. 새로운 기술로 밤새 시작할 수 없으며 동일한 품질을 제공 할 것으로 기대합니다.

나는 이주를 시작하라고 지시 할 때까지 개인적으로 귀찮게하지 않습니다. 어느 시점에서 나는 관리자에게 내가 .NET Guy이고 결정했기 때문에 다른 기술로 전환하지 않을 것이라고 말할 것입니다.

기술적 인 측면에서는 언어 구문이 아니라 라이브러리와 그 기능이 있습니다. 물론 .NET 3.5의 최신 종과 휘파람이 광범위하게 사용된다면 언어 차이는 실제 도전을 제공 할 것입니다.

그것은 확실히 재미있는 방법입니다. 누군가가 관련이 있다는 것을 전혀 모른다 ...

아마도 당신은 사용할 수 있습니다 JNI4NET -OpenSource Bridge ? 또는 목록 다른 옵션 알아요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top