.NET의 역사 (feat. JAVA 전쟁)

seunghyun·2024년 9월 16일
0
post-thumbnail

JAVA 전쟁

과거의 C, C++ 의 문제점은 메모리 관리의 어려움, 그리고 OS마다 코드가 다르고 CPU 아키텍처마다 컴파일을 다시 해줘야 한다는 문제다. Sun Microsystems는 이러한 C의 문제점을 해결하기 위해 Java를 만들었다. Java의 가장 큰 약속은 한 번 작성하면 어디서든 작동된다 였다. 당시 데스크톱 시장은 Windows가 장악했기에 Java가 성공하면 Windows 의존도가 줄어든다.

그래서 MS는 Sun으로부터 Java의 라이센스를 받았고, 윈도우 전용 Java를 만들었다. 이는 프로그램이 윈도우에서 더 잘 작동하도록 만들었지만, Java의 핵심 약속인 '한 번 작성하면 어디서든 작동된다'를 깨뜨렸다고 한다. Sun은 Java의 핵심 약속이 깨졌으니 이게 자바 표준 위반이라고 주장했다. 결국 97년도에 Sun은 MS를 소송했고, 2001년 MS는 Sun에 2천만 달러를 지불하고 패소했다.

패배의 여파로, 윈도우즈용 Java는 시장에서 퇴출되었고, 그 대신에 MS는 Java를 대응하기 위해 .NET 프레임워크와 C#을 만들었다.

한 번 작성하면 어디서든 작동된다

자바 소스코드는 컴파일되면 중간 언어인 Bytecode라는 CPU 비종속 형식이 되고, JVM은 이를 읽어 OS에 맞는 기계어로 변환하여 CPU로 전달한다.

.NET도 마찬가지다.
컴파일이 되면 중간 언어인 CIL(Common Intermediate Language)로 바뀌고, 가상머신인 CLR(Common Language Runtime)이 최종 기계어로 바꿔준다.

단, Java와 다른 점은 다양한 언어(C3, F#, Visual Basic Code)를 통합시켰고, 무엇보다 Windows에 종속적이도록 시작했다.

History

  • .Net Framework 1.0 ~ 4.8.1 (2002~2022)
  • Mono Framework (2004)
    • Miguel de lcaza와 그의 팀이, .NET Framework를 다중 플랫폼으로 구현한 오픈소스 프로젝트인 Mono Framework를 개발한다.
    • 이로 인해서 Linux나 Mac에서도 .NET Framework가 실행이 가능해졌고,
    • Unity에서 이를 채택하여 Windows 뿐만 아니라 Android, iOS 게임을 C#으로 개발할 수 있게 되었다.
  • .NET CORE 1.0 ~ 3.1 (2016~2019)
    • 드디어 MS가 공식적으로 다중 플랫폼에서 실행되는 프레임워크인 .NET CORE를 오픈소스로 출시했다.

그래서 문제는... .Net Framework 로 만든 라이브러니는 .Net Framework에서만 실행이 가능했고, Mono Framework 라이브러리는 Mono Framework에서만, 마찬가지로 .NET CORE 라이브러리는 .NET CORE에서만 실행이 가능했다.
이로 인해 동일한 라이브러리를 만들어도 각 구현체별로 따로 빌드해야 하는 문제가 발생했다.

그래서 여러 .NET 구현체 간 호환성을 보장하기 위해 만든 API 표준인 .NET Standard가 나왔다.

  • .NET Standard 1.0 ~ 2.1 (2016~2018)
    • 여러 .NET 구현체 간 호환성을 보장하기 위해 만든 API 표준

그러다가 .NET 구현체가 너무 많아졌고,...
분리된 .NET 생태계를 하나로 통합하기 위해 2020년에 .NET 5가 나왔다.

  • .NET 5~ (2020~)
profile
game client programmer

0개의 댓글