develop

C#과 Java의 특징과 차이점을 알아보자

방뎁 2023. 8. 18. 23:58
반응형

개발을 학원에서부터 처음 배워 개발의 참맛을 깨닫고 회사를 다니며 학위를 준비 했습니다. 

그러면서 언어들이 다 비슷비슷하지만 특징이 다른걸 알게 되었습니다. 

오늘은 언어의 기본 중 기본인 C#과 Java에 대해 알게 된 사실을 정리 해보겠습니다. 

 

 

C#과 Java는 모두 객체지향적 언어입니다.

하지만 두 언어는 서로 다른 특징과 장단점을 가지고 있으며,

개발자의 목적과 환경에 따라 적합한 언어를 선택하는 것이 중요합니다.

그렇다면 C#과 Java의 특징과 차이점은 무엇일까요? 

C#

C#은 Microsoft에서 개발한 .NET Framework와 함께 동작하는 언어입니다.

C#은 C++과 VB의 특징을 조합하고,

Java의 강점까지 포함한 언어로, 간단하고 강력하며 컴포넌트 기반의 언어입니다.

C#은 Visual Studio라는 편리한 개발환경을 제공합니다. 

CLR(Common Language Runtime)과

CLS(Common Language Specification)라는 기술을 통해

여러 언어와의 상호 호환성을 갖습니다.

C#은 Windows 플랫폼에서 주로 사용되며,

웹, 모바일, 게임, 데스크탑 등 다양한 분야에서 활용됩니다.

현재 가장 많이 쓰이고 있는 곳은 유니티엔진입니다! 유니티 게임개발이요

JAVA

Java는 Sun Microsystems에서 개발한 플랫폼 독립적인 언어입니다.(몰라도됨)

Java는 간단하고 객체지향적이며 분산처리되고 인터프리트되며 보안성이 높은 언어로,

JVM(Java Virtual Machine)을 통해

다양한 기기와 운영체제에서 실행될 수 있습니다.

JVM시험에 자주나옵니다.  그게 무슨 시험이든 나옵니다. ㅋㅋ

Java는 J2SE(Standard Edition), J2ME(Micro Edition), J2EE(Enterprise Edition) 등

다양한 에디션을 제공하며, 웹, 모바일, 임베디드, 엔터프라이즈 등 다양한 분야에서 활용됩니다.

차이점

C#과 Java의 차이점은 다음과 같습니다.

문법

C#과 Java는 모두 C++에서 파생된 언어이므로

문법적으로 유사한 부분이 많습니다.

하지만 일부 차이점도 존재합니다.

예를 들어, C#에서는 using 키워드를 사용하여

네임스페이스나 클래스를 임포트하거나 별칭을 지정할 수 있지만,

Java에서는 import 키워드를 사용하여

패키지나 클래스를 임포트할 수 있습니다.

또한 C#에서는 :을 사용하여 상속과 구현을 나타내고

base 키워드를 사용하여 부모 클래스를 참조할 수 있지만,

Java에서는 extends와 implements 키워드를 사용하여

상속과 구현을 나타내고 super 키워드를 사용하여

부모 클래스를 참조할 수 있습니다.

 

자료형

C#과 Java는 모두 값 타입과 참조 타입을 구분합니다.

하지만 C#에서는 부호 없는 정수형(unsigned)과 128비트 부동 소수형(decimal)을 추가로 지원하며,

모든 원시 자료형은 System 네임스페이스의 객체이며 별칭이 존재합니다.

예를 들어, int는 System.Int32의 별칭이고, bool은 System.Boolean의 별칭입니다.

Java에서는 원시 자료형이 존재하고 각각의 래퍼 클래스가 존재합니다.

예를 들어, int는 Integer 클래스의 인스턴스이고,

boolean은 Boolean 클래스의 인스턴스입니다.

상수

C#에서는 const와 readonly 키워드를 사용하여 상수를 선언할 수 있습니다.

const 키워드를 사용하면 컴파일 타임에 값이 결정되고 런타임에 변경할 수 없습니다.

readonly 키워드를 사용하면 런타임에 한 번만 값이 할당될 수 있습니다.

Java에서는 final 키워드를 사용하여 상수를 선언할 수 있습니다.

final 키워드를 사용하면 값이 한 번 할당되면 변경할 수 없습니다.

열거형

C#에서는 enum 키워드를 사용하여 열거형을 선언할 수 있습니다.

열거형은 정수형의 값들을 의미 있는 이름으로 지정할 수 있는 방법입니다.

C#에서는 열거형의 기본 자료형이 int이며, 다른 자료형으로 변경할 수 있습니다.

Java에서도 enum 키워드를 사용하여 열거형을 선언할 수 있습니다.

하지만 Java에서는 열거형이 특수한 형태의 클래스로 취급되며, 생성자나 메서드를 가질 수 있습니다.

Java에서는 열거형의 기본 자료형이 int이며, 변경할 수 없습니다.

제네릭

C#과 Java는 모두 제네릭을 지원합니다.

제네릭은 타입 파라미터를 사용하여 다양한 타입의 객체를 다루는 클래스나 메서드를 정의하는 방법입니다.

제네릭을 사용하면 코드의 재사용성과 타입 안전성을 높일 수 있습니다.

C#과 Java의 제네릭은 문법적으로 유사하지만, 내부적으로 다르게 구현됩니다.

C#에서는 제네릭을 컴파일 타임에 처리하며,

각 타입 파라미터에 대해 별도의 코드를 생성합니다.

이를 reification이라고 합니다. J

ava에서는 제네릭을 런타임에 처리하며,

모든 타입 파라미터를 Object로 변환합니다.

이를 type erasure라고 합니다.

 

C#과 Java는 각각의 장점과 단점을 가진 프로그래밍 언어입니다. 

그리고 개발하다보면 다 비슷하게 느껴지는 것 같습니다. 

마소 형님들의 링크를 남깁니다. C# 무료 강의가 있습니다!

반응형

https://dotnet.microsoft.com/ko-kr/learn/csharp

 

C# 배우기 | 무료 자습서, 과정, 비디오 등 | .NET

C#으로 프로그래밍하는 방법을 배울 수 있는 무료 과정, 자습서, 비디오 등. .NET 팀, .NET 커뮤니티 및 교육 회사의 리소스.

dotnet.microsoft.com

 

반응형