필자가 C#을 먼저 경험하고 Java를 공부하면서 느낀 차이점을 간단하게 몇 가지 적어보려합니다.
참고용으로 활용하길 바랍니다.
- 기본적으로 C#은 Native언어가 아니다보니 MS의 .Net의
CLR(Common Language Runtime)에 있는 JIT(Just-In_Time) 컴파일러를 거쳐서
Native코드로 변환되어 실행하는데 이 현상이 성능하락의 원인중 하나로 꼽히기도 합니다.
- 그런데 간단한 테스트 결과 Java는 JVM을 통한 컴파일러 과정이 있음에도 불구하고
C#에 비해서 빠른 성능을 보여주었습니다.
먼저 단순 반복문 사용시의 C#의 테스트결과를 확인해보도록 하겠습니다.
- 10억번 반복 시 1.8초, 100억번 반복 시 15.5초가 걸렸습니다.
- 그렇다면 Java는 얼마나 걸리는지 확인해보겠습니다.
- 10억번을 반복 시 1초, 100억번을 반복하였는데 무려 3초밖에 걸리지 않은것을 확인할 수 있습니다.
- 무겁지 않은 프로그램은 사실 크게 차이가 없지만 단순하게 for문을 여러번 돌리는 테스트만 진행해봐도 반복횟수가 늘어날수록(프로그램이 무거워질수록) 완료되기까지의 속도가 서로 많이 차이나는것을 볼 수 있습니다.
- Winform, WPF와 같은 방식으로 개발하게 되면 아래와 같이 편하게 디자인을 진행할 수 있습니다.
- 디자인 할 수 있는 파일에서 왼쪽의 '도구 상자'를 누르면 여러 컴포넌트들이 나오고
마우스로 드래그 앤 드롭하면 간단하게 디자인이 완성됩니다.
- 또한 경우에 따라서는 아래의 Java처럼 코드로 디자인을 진행할 수도 있습니다.
물론 코드로 디자인을 하려면 Form 클래스를 상속받아야 하지만 기본적으로 되어있기 때문에
특별히 건들지 않는 이상 신경 쓸 점은 아닙니다.
- 그와 반면에 Java는 디자인을 C#처럼 간단하게 하기 쉽지 않습니다.
- Java는 UI 디자인을 초기에 나온 AWT 혹은 후에 개선되어 나온 Swing을 이용하여
둘 다 코드로 디자인을 하기 때문입니다. 그 중에서 Swing으로 디자인 한 예시를 보겠습니다.
- Java는 Swing의 클래스인 JFrame을 상속받은 클래스 안에 위와 같이
코드로 직접 해주어야하는 약간의 불편함이 있습니다.
- 다음으로 두 언어의 차이점 중 하나는 코드에 숫자를 넣었을 경우에 대한 처리방식입니다.
여기에서는 Long 타입을 예로 들겠습니다.
* C# *
- C#은 대응하는 변수 등에 타입만 맞춰주면 특별한 일 없이 오류가 뜨지 않는 것을 볼 수 있습니다.
반면, Java는 어떤 지 확인해보겠습니다.
* Java *
- Java는 대응하는 변수에 타입을 long으로 맞춰주어도 오류가 나는 모습을 확인할 수 있습니다.
그렇다면, 어떻게 해야 이 오류가 없어질까요?
- 위와 같이 L을 붙여주면 오류가 발생하지 않습니다. Java는 숫자형태의 코드를 Int32로 치기 때문에
별도의 선언을 통해서 해당 숫자값이 Long이라고 인식하게 만들어야 한다는 것 입니다.
물론 대문자 L, 소문자 l 둘 다 가능하지만 저는 소문자는 숫자와 혼동되어 보이는 것 같아
대문자를 주로 쓰는 편입니다.
- 이상으로 간단하게 Java와 C#의 차이점을 살펴보았습니다.
두 언어가 성격이 매우 비슷해서 차이점이 많이 안 보일수 있다고 생각하였는데 파고들다 보면
의외로 많이 나오는 것 같습니다.
이 글이 모든 분들께 조금이나마 참고가 되셨으면 좋겠습니다.
댓글 영역