JAVA와 C#의 차이점

2024. 11. 24. 23:27·공부

Java와 C#은 모두 객체 지향 프로그래밍 언어이다. 두 언어는 많은 유사점이 있지만, 몇 가지 중요한 차이점이 있다.

 

플랫폼

Java는 "Write Once, Run Anywhere"를 목표로 하고 있다. Java 프로그램은 JVM(Java Virtual Machine) 위에서 실행되며, 운영 체제와 하드웨어에 관계없이 실행이 가능하다.

 

C#은 .NET 프레임워크에서 실행된다. 초기에는 Windows 환경에서만 사용되었지만, .NET Core로 크로스 플랫폼 지원이 확대되었다. 이제는 Windows, Linux, macOS에서도 실행 가능하다.

 


컴파일 방식

Java는 소스 코드를 바이트 코드로 컴파일한 뒤, JVM에서 실행된다. 바이트 코드는 운영 체제와 관계없이 동일하게 실행된다.


C#은 소스 코드를 중간 언어(IL)로 컴파일한 뒤, CLR(Common Language Runtime)에서 실행된다. 이 중간 언어는 .NET 런타임 환경에서 실행된다.

 


구문 및 언어 기능

Java는 상대적으로 단순한 구문을 가지고 있다. Java 8부터 람다 표현식과 스트림 API 같은 기능들이 추가되었다.


C#은 더 많은 언어 기능을 제공한다. 예를 들어, LINQ(언어 통합 쿼리), 비동기 프로그래밍을 위한 async/await, 익명 메서드, 튜플, 패턴 매칭 등의 고급 기능이 있다.

 


메모리 관리

Java는 상대적으로 단순한 구문을 가지고 있다. Java 8부터 람다 표현식과 스트림 API 같은 기능들이 추가되었다.


C#은 더 많은 언어 기능을 제공한다. 예를 들어, LINQ(언어 통합 쿼리), 비동기 프로그래밍을 위한 async/await, 익명 메서드, 튜플, 패턴 매칭 등의 고급 기능이 있다.

 


라이브러리 & 프레임워크

Java는  Spring, Hibernate, JavaFX 등이 있다.


C#은 .NET 프레임워크와 .NET Core를 제공

ASP.NET, Entity Framework, WPF, Xamarin 와 같은 프레임워크와 라이브러리가 있다.

 


메모리 관리

Java는 가비지 컬렉션을 통해 자동으로 메모리를 관리한다. JVM이 자동으로 메모리를 할당하고 해제한다.


C#은 CLR에서 가비지 컬렉터를 통해 메모리를 관리하며, Dispose 메서드를 사용하여 명시적으로 리소스를 해제할 수도 있다.

 


멀티스레딩

Java는 Thread 클래스를 사용하여 멀티스레딩을 처리한다. 


C#은 Thread 클래스와 Task 클래스를 사용하여 멀티스레딩을 처리하며, async/await를 통해 비동기 프로그래밍을 손쉽게 구현할 수 있다.

 

 


인터페이스와 다중 상속

Java는 클래스에서 다중 상속을 지원하지 않지만, 인터페이스는 여러 개를 구현할 수 있다.


C#은 클래스에서 다중 상속을 지원하지 않지만, 인터페이스는 여러 개를 구현할 수 있으며, default 메서드를 통해 인터페이스 내에서도 메서드 구현을 제공할 수 있다.

 


Java와 C#은 서로 다른 플랫폼에서 주로 사용되지만, 기본적인 객체 지향 설계 원칙은 매우 유사하다.

Java는 플랫폼 독립적인 실행을 지원하며, C#은 .NET 환경에서 강력하게 작동한다.

 

 

'공부' 카테고리의 다른 글

OOP  (0) 2024.12.01
[JAVA, Python] 프로그래머스 120583 중복된 숫자 개수  (0) 2024.11.24
클라우드 컴퓨팅, AWS  (1) 2024.11.20
[JAVA] CodeUp 4891 : 행복  (0) 2024.11.18
자료구조 정리  (0) 2024.11.18
'공부' 카테고리의 다른 글
  • OOP
  • [JAVA, Python] 프로그래머스 120583 중복된 숫자 개수
  • 클라우드 컴퓨팅, AWS
  • [JAVA] CodeUp 4891 : 행복
yn98
yn98
좌우명 : 여전할 것 인가, 역전할 것 인가? 백엔드 개발자가 되고싶은 역전하고 있는 개발자 꿈나무의 블로그입니다. 개발을 하면서 공부한 것들을 기록합니다. 24.06 ~
  • yn98
    개발 꿈나무
    yn98
  • 전체
    오늘
    어제
    • 분류 전체보기 (131)
      • Python (3)
      • 공부 (7)
      • DB (7)
      • JAVA (24)
      • JSP (9)
      • jQuery (2)
      • HTML (3)
      • Spring (20)
      • 웹 (4)
      • C (1)
      • Git (2)
      • 에러일기 (19)
      • 프로젝트 (6)
      • 책 (21)
        • 멘토씨리즈 자바 (14)
        • 2024 수제비 정보처리기사 (7)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Notion
  • 공지사항

  • 인기 글

  • 태그

    생성자
    스프링 프레임워크
    상속
    ViewResolver
    @service
    Di
    aop
    @repository
    recoverabledataaccessexception
    2-layered 아키텍처
    객체지향
    @Component
    정처기
    수제비
    DispatcherServlet
    어노테이션
    정보처리기사
    java
    멘토씨리즈 자바
    MVC
    정처기 실기
    정보처리기사 실기
    html
    codeup 4891 : 행복
    이벤트 스케줄러
    jsp
    오버로딩
    오블완
    티스토리챌린지
    Spring
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
yn98
JAVA와 C#의 차이점
상단으로

티스토리툴바