본문 바로가기
야미스터디/Backend

[Etc] Java와 C언어의 차이 📌

by 의정부핵꿀밤 2022. 9. 18.
728x90

C언어

  • C언어의 등장
    • 1980년대에 IBM이 개인용 컴퓨터를 만들어 보급하기 전에는 윈도우나 Mac같은 운영체제가 없었다
    • 따라서 컴퓨터 산업 초기에는 주로 회사에서 사용하는 컴퓨터에 Unix 운영체제를 사용했다
    • 그러나 유닉스에서 실행되는 프로그램은 하드웨어가 바뀌면 새로 개발해야 했다
    • 이러한 불편함을 해결하고자 데니스 리치와 켄 톰슨은 B언어를 발전시켜, 1972년 C언어를 만들었다
  • C언어는 low level 퍼포먼스를 위해 디자인된 프로그래밍 언어로, 기계어에 가깝다
  • 따라서 에어컨이나 스마트 TV 등의 시스템 프로그래밍이나 운영체제(OS) 개발을 할 때 주로 사용한다
  • C언어는 메모리를 적게 차지하고 빠르게 동작하기 때문에 메모리 공간이 부족한 곳에 주로 사용한다

 

 

 

C언어 특징

  • 시스템 프로그래밍이 가능하다
    • 운영체제를 개발할 목적으로 만든 언어이므로 하드웨어를 제어하는 시스템 프로그래밍이 가능하다
  • 이식성을 갖춘 프로그램을 만들 수 있다
    • 표준이 정의되지 않은 문접을 사용한 프로그램은 특정 컴파일러에서만 컴파일 될 가능성이 높으므로 이식성을 유지하기가 힘들다
    • 하지만 C언어는 이식성을 갖춘 언어여서 기종이 다른 컴퓨터에서도 사용 가능한 프로그램을 작성할 수 있다
  • 작고 효율적이다
    • C로 짜여진 코드는 속도가 빠르고 바이너리 크기가 작다
    • 이러한 특성 때문에 속도가 생산성보다 중요한 임베디드 혹은 모바일 계열, 시스템 프로그래밍 등에서 주로 사용된다
  • 절차지향 프로그래밍 언어이다
    • 절차지향 프로그래밍은 순차적인 처리가 중요하며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이다

 

 

 

 

Java

  • 자바는 객체지향 프로그래밍 언어(Object Oriented Programming)로, 1991년 썬 마이크로 시스템즈에서 개발했으며 현재는 오라클에서 관리하고 있는 언어이다
  • 자바는 운영체제에 독립적인 언어로 전 세계 다양한 분야에서 사용하는 프로그래밍언어이며, 주로 웹 서버와 안드로이드 앱 개발에 사용된다
  • 자바에는 Java API라고 하는 자바 시스템 제어를 위한 명령어가 있으며 무료로 배포된 자바 개발 도구(JDK)와 풍부한 Java API를 활용해 강력한 기능의 자바 프로그램을 작성할 수 있다
  • 자바 프로그램은 바이트 코드 파일(.class)로 구성된다
  • 이 바이트 코드 파일은 운영체제에서 바로 실행할 수 없고, JVM(자바 가상 기계)라는 번역기가 필요하다
  • Java는 JVM을 통해 바이트 코드 파일이 다양한 운영체제에서 독립적으로 사용이 가능하다
  • C는 리눅스, 윈도우, 맥 등 운영체제 별로 운영체제 위에서 바로 실행되지만, Java는 운영체제 위의 JVM에서 실행된다

 

 

 

 

Java 특징

  • 여러 운영체제에서 실행 가능하다
    • 자바로 작성도니 프로그램은 JVM 위에서 실행되므로 운영체제를 가리지 않는다
    • 윈도우에서 개발된 프로그램을 수정하지 않고도 리눅스, 맥에서 바로 실행할 수 있다
  • 객체지향 프로그래밍 언어이다
    • 절차지향인 C와는 다르게 자바는 객체지향 프로그래밍 언어이다
    • 자바는 객체를 만들고 이 객체들을 연결하여 더 큰 프로그램을 완성한다
  • 메모리를 자동으로 관리해준다 (Garbage Collection)
    • 자바가 메모리(RAM)를 자동으로 관리해주기 때문에 개발자는 메모리를 관리하는 수고를 덜고, 코드 작성에만 집중할 수 있게 되었다
  • 무료 라이브러리가 풍부하다
    • 무료로 다운로드해서 사용할 수 있는 오픈 소스 라이브러리가 풍부하기 때문에 프로그램 개발 기간을 단축한다
    • 그래픽 사용자 인터페이스의 제작(GUI 설계), 데이터베이스 접근, 다중 스레드, 네트워크 프로그래밍 등은 모두 표준 라이브러리에서 지원한다
  • 이 외에도 캡슐화, 다형성, 상속, 뛰어난 보안성, 멀티쓰레드 지원 등의 특징이 있다

 

 

 

 

 

C언어 vs Java

  C언어 Java
절차지향 vs 객체지향 절차지향 언어 객체지향 언어
처리 속도 상대적으로 빠르다 상대적으로 느리다
유지보수 어렵다 용이하다
용도 임베디드 또는 운영체제 구현 응용 SW, 안드로이드 앱 등
안정성 & 확장성 상대적으로 낮다 상대적으로 높다
주로 사용하는 개발환경 비주얼 스튜디오(윈도우 기준) 이클립스(eclipse), 인텔리제이(IntelliJ)
메모리 제어 메모리를 직접 조절하여 메모리 낭비가 적다 각각의 클래스로 인해 메모리 낭비가 높다
💡 절차지향은 데이터 중심으로 함수를 구현하며, 객체지향은 기능 중심으로 메서드를 구현하는 것이지, 이 둘은 반대 개념이라고 할 수 없다

 

 


참고)

https://unequaled-peach-7e5.notion.site/Java-C-c5fc8ee5b7bb493caaa0a456aca887b3

 

Java와 C언어의 차이

🌹 정리 by 장미(https://velog.io/@newbiekim/)

unequaled-peach-7e5.notion.site

https://hongong.hanbit.co.kr/c%EC%96%B8%EC%96%B4-java-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%A0%95%EB%A6%AC%ED%91%9C/

 

C언어와 Java의 차이점을 표 한 장으로 정리하겠습니다.

C언어는 순차적으로 읽어 나가는 절차 지향 언어이며, java는 설계적인 측면이 강조된 객체 지향 언어 입니다. C언어는 임베디드 또는 운영체제처럼 속도나 용량 등에서 최적화가 필요한 곳에 쓰

hongong.hanbit.co.kr

 

728x90

'야미스터디 > Backend' 카테고리의 다른 글

[Etc] Docker 📌  (0) 2022.10.11
[Etc] DTO 📌  (0) 2022.09.28
[Etc] 좋은 개발자란 무엇일까요? 📌 ~ing  (0) 2022.08.28
[보안] 암호화, 해시함수  (0) 2021.12.23
비전공자를 위한 이해할 수 있는 IT 지식  (0) 2021.09.10

댓글