JAVA와 C#은 둘다 자신만의 '속성'과 '기능'을 정의한 클래스를 가지고 상호작용하는 개념의 객체지향 언어(OOP)이다.
이런 두 객체지향 언어의 차이점을 알아보자.
1. JAVA와 C#의 관계
마이크로소프트(Microsoft)사에서 제작한 C#은 Java와 C++의 아쉬운 점을 극복하기 위해 닷넷 프레임워크의 한 부분으로 만들어졌다.하지만 C#이 Java의 여러 단점들을 극복했음에도 불구하고 이미 Java로 개발되어 있는 시스템들이 많고, 많은 Java 생태계가 조성되었기 때문에 점유율을 그다지 높이지는 못했다. 또한 Java를 대신할 수 있는 포지션에 파이썬(Python)과 같은 다른 언어들이 대안이 되고있는 상황이였다.
C#을 통하여 다룰 수 있는 닷넷 플랫폼의 기술들 조차도 자바를 염두에 둔 것이 많아 문법적인 특성이 자바와 매우 유사하다.
하지만 C#은 자바와는 달리 불안전 코드(unsafe code)와 같은 기술을 통하여 플랫폼 간 상호 운용성에 상당히 많은 노력을 기울이고 있다.
2. JVM(Java Virtual Machine) VS CLR(Common Language Runtime)
Java는 JVM(Java Virtual Machine, 자바 가상 머신) 지원
자바의 컴파일 과정으로는
1. 자바 소스코드 → 컴파일 → 바이트코드(.class)로 변환한다.
2. 변환된 바이트 코드는 JVM상에서 번역되어 실행된다.
C#은 CLR(Common Language Runtime, 공통 중간 언어) 지원
C#의 컴파일 과정으로는
1. NET의 경우는 .NET코드 → 컴파일 → IL로 변경된다.
2. IL은 CLR에 의해 실행 시 네이티브 코드로 변환되어 실행된다.
JVM 과 CLR은 동작 원리가 거의 흡사하다. 다만, 가장 큰 차이는 JVM은 Java Runtime으로 Java에서만 동작할 수 있지만,
CLR은 공용언어 Run Time으로 C#이나 기타 Visual Basic, .NET과 같은 언어에서 사용된다.
3. C#과 JAVA의 문법적 차이
C# | Java | |
구조체 지원 | O | X |
goto문 지원 | O | X |
private 멤버 변수의 getter와 setter 메서드를 처리하는 get, set 키워드 지원 | O | X |
'명명된 매개변수'(Named Parameter) | O | X |
'선택적 매개변수'(Optional Parameter) | O | X |
'Programming' 카테고리의 다른 글
[MQ] rabbitMQ (0) | 2022.10.23 |
---|