상세 컨텐츠

본문 제목

Java와 C#의 차이점

프로그래밍

by TickTack 2020. 6. 15. 18:25

본문

필자가 C#을 먼저 경험하고 Java를 공부하면서 느낀 차이점을 간단하게 몇 가지 적어보려합니다.

참고용으로 활용하길 바랍니다.

 

1. 처리속도의 차이

 

- 기본적으로 C#은 Native언어가 아니다보니 MS의 .Net의

CLR(Common Language Runtime)에 있는 JIT(Just-In_Time) 컴파일러를 거쳐서

Native코드로 변환되어 실행하는데 이 현상이 성능하락의 원인중 하나로 꼽히기도 합니다.

 

- 그런데 간단한 테스트 결과 Java는 JVM을 통한 컴파일러 과정이 있음에도 불구하고

C#에 비해서 빠른 성능을 보여주었습니다.

 

먼저 단순 반복문 사용시의 C#의 테스트결과를 확인해보도록 하겠습니다.

 

C# Winform 프로젝트의 콘솔로 테스트한 모습

 

- 10억번 반복 시 1.8초, 100억번 반복 시 15.5초가 걸렸습니다.

 

- 그렇다면 Java는 얼마나 걸리는지 확인해보겠습니다.

 

Java로 테스트한 모습

 

- 10억번을 반복 시 1초, 100억번을 반복하였는데 무려 3초밖에 걸리지 않은것을 확인할 수 있습니다.

 

- 무겁지 않은 프로그램은 사실 크게 차이가 없지만 단순하게 for문을 여러번 돌리는 테스트만 진행해봐도 반복횟수가 늘어날수록(프로그램이 무거워질수록) 완료되기까지의 속도가 서로 많이 차이나는것을 볼 수 있습니다.

 

2. 프로그램 디자인 편의성

 

* C# *

- Winform, WPF와 같은 방식으로 개발하게 되면 아래와 같이 편하게 디자인을 진행할 수 있습니다.

 

Winform 디자인 화면

 

WPF 디자인 화면

- 디자인 할 수 있는 파일에서 왼쪽의 '도구 상자'를 누르면 여러 컴포넌트들이 나오고

마우스로 드래그 앤 드롭하면 간단하게 디자인이 완성됩니다.

 

- 또한 경우에 따라서는 아래의 Java처럼 코드로 디자인을 진행할 수도 있습니다.

물론 코드로 디자인을 하려면 Form 클래스를 상속받아야 하지만 기본적으로 되어있기 때문에

특별히 건들지 않는 이상 신경 쓸 점은 아닙니다.

 

* Java *

- 그와 반면에 Java는 디자인을 C#처럼 간단하게 하기 쉽지 않습니다.

 

- Java는 UI 디자인을 초기에 나온 AWT 혹은 후에 개선되어 나온 Swing을 이용하여

둘 다 코드로 디자인을 하기 때문입니다. 그 중에서 Swing으로 디자인 한 예시를 보겠습니다.

 

Java에서 Swing을 이용하여 디자인 한 모습

 

- Java는 Swing의 클래스인 JFrame을 상속받은 클래스 안에 위와 같이

코드로 직접 해주어야하는 약간의 불편함이 있습니다.

 

3. 숫자형태의 값 처리

 

- 다음으로 두 언어의 차이점 중 하나는 코드에 숫자를 넣었을 경우에 대한 처리방식입니다.

여기에서는 Long 타입을 예로 들겠습니다.

 

* C# *

 

C#에 1000억을 기재한 모습

 

- C#은 대응하는 변수 등에 타입만 맞춰주면 특별한 일 없이 오류가 뜨지 않는 것을 볼 수 있습니다.

반면, Java는 어떤 지 확인해보겠습니다.

 

* Java *

 

Java에 100억을 기재한 모습

 

- Java는 대응하는 변수에 타입을 long으로 맞춰주어도 오류가 나는 모습을 확인할 수 있습니다.

그렇다면, 어떻게 해야 이 오류가 없어질까요?

 

Java에 100억을 L을 붙여 기재한 모습

 

- 위와 같이 L을 붙여주면 오류가 발생하지 않습니다. Java는 숫자형태의 코드를 Int32로 치기 때문에

별도의 선언을 통해서 해당 숫자값이 Long이라고 인식하게 만들어야 한다는 것 입니다.

물론 대문자 L, 소문자 l 둘 다 가능하지만 저는 소문자는 숫자와 혼동되어 보이는 것 같아

대문자를 주로 쓰는 편입니다.

 

* 마치며 *

- 이상으로 간단하게 Java와 C#의 차이점을 살펴보았습니다.

두 언어가 성격이 매우 비슷해서 차이점이 많이 안 보일수 있다고 생각하였는데 파고들다 보면

의외로 많이 나오는 것 같습니다.

이 글이 모든 분들께 조금이나마 참고가 되셨으면 좋겠습니다.

댓글 영역