포스트

Python 및 Java의 라이브러리 및 프레임워크 기능 비교

Python vs Java : Library and Framework


🔔 Introduction

📌 Python vs Java : 대표적인 프로그래밍 언어

  • Python 및 Java 언어는 각기 다양한 Library 및 Framework를 제공합니다.
  • 이번 글에서는 각 언어에서 다루는 tool 중 비슷한 것들을 서로 비교해보겠습니다.
    Django Spring Flask Spark Numpy ND4J Pandas Tablesaw
    TensorFlow DL4J SQLAlchemy Hibernate Requests OkHttp Tkinter Swing
    Pillow BufferedImage OpenCV MoviePy Xuggler Pygame Processing


🔔 1. Application Program Framework

📌 Django vs Spring

  • Django는 Python의 대표적인 웹 및 데스크톱 애플리케이션의 프레임워크입니다.
    Django를 활용하는 대표적인 기업은 Youtube, Instagram, Dropbox 등이 있습니다.
  • Spring은 Java의 대표적인 웹 및 데스크톱 애플리케이션의 프레임워크입니다.
    우리나라의 전반적인 정부 행정 시스템은 Spring으로 구축되었으며 SI 기업에서 주로 사용됩니다.

📌 Flask vs Spark

  • Flask는 Python의 애플리케이션 프레임워크로 간결성과 유연성이 특징입니다.
    Flask를 활용하는 대표적인 기업은 Netflix, LinkedIn, Pinterest 등이 있습니다.
  • Apache Spark는 Java의 빅데이터 처리가 필요한 애플리케이션 프레임워크입니다.
    Spark를 활용하는 대표적인 기업은 Facebook, Amazon, Uber 등이 있습니다.


🔔 2. Data Science & Machine Learning

📌 Numpy vs ND4J

  • Numpy는 다차원 배열 연산 기능을 제공하는 Python의 라이브러리입니다.
    Numpy를 활용하는 대표적인 기업 등은 Google, Intel, NASA 등이 있습니다.
    Numpy는 또한 필자가 개발중인 싱크홀(공동) 자동 분석 AI 모델 개발에도 이용중입니다.
  • ND4J(N-Dimensional Arrays for Java)는 Numpy와 유사한 Java의 라이브러리입니다.
    ND4J를 활용하는 대표적인 기업은 IBM 등이며 이는 아래 Deeplearning4j 시스템의 일부입니다.

📌 Pandas vs Tablesaw

  • Pandas는 데이터 분석 및 가공을 위한 목적의 Python 라이브러리입니다.
    Pandas를 활용하는 대표적인 기업은 금융회사인 J.P.Morgan, Uber 등입니다.
    Pandas는 또한 필자의 Toy-Projects 중 하나인 주식 종가 조회 프로그램 개발에도 사용되었습니다.
  • Tablesaw는 Pandas와 유사한 데이터 분석 기능을 제공하는 Java의 라이브러리입니다.
    Tablewas를 활용하는 대표적인 기업은 Netflix 등이며 데이터를 이용한 개발에 사용됩니다.

📌 TensorFlow vs DL4J

  • Tensorflow는 Google이 개발한 Python의 머신 러닝 프레임워크입니다.
    Tensorflow를 활용하는 대표적인 기업은 Twitter, Airbnb, DeepMind 등입니다.
    Tensorflow는 또한 필자가 개발중인 싱크홀(공동) 자동 분석 AI 모델 개발에도 이용중입니다.
  • DL4J(Deeplearning4j)는 JVM (Java Vertual Machine) 기반의 딥러닝 프레임워크입니다.
    Deeplearning4j는 사실상 Eclipse의 일부이며 Microsoft Azure의 AI 서비스에서도 지원됩니다.


🔔 3. DataBase & ORM (객체지향적 DB 관리 기능)

📌 SQL Alchemy vs Hibernate

  • SQL Alchemy는 Python의 라이브러리이며 DBMS과의 호환성을 제공합니다.
    SQL Alchemy는 SQL 쿼리를 직접 작성하지 않아도 DB를 관리할 수 있는 기능을 제공합니다.
    SQL Alchemy를 활용하는 대표적인 기업은 Dropbox, Reddit, Yelp (맛집 추천 어플) 등입니다.
  • Hibernate는 Spring에서 DB 서버와의 연결 시 필요한 Java의 프레임워크입니다.
    Hibernate를 활용하는 대표적인 기업은 LinkedIn, Dell, IBM 등이 있습니다.


🔔 4. Networking

📌 Requests vs OkHttp

  • Requests는 Python의 라이브러리이며 HTTP 요청을 쉽게 보낼 수 있어 웹 크롤링 시 사용됩니다.
    Requests를 활용하는 대표적인 기업은 Google, Facebook, AWS (Amazon Web Service) 등입니다.
    Requests는 또한 필자의 Toy-Projects 중 하나인 주식 종가 조회 프로그램 개발에도 사용되었습니다.
  • OkHttp는 주로 Android 애플리케이션 개발 중 HTTP 통신에 사용되는 Java의 라이브러리입니다.
    OkHttp의 특징은 네트워크 연결이 종료된 상황에서도 자동으로 네트워크 연결을 요청하는 기능입니다.
    OkHttp는 비즈니스용 제품 서비스 기업인 Square에서 개발되었습니다.


🔔 5. GUI (Graphical User Interface : SW program)

📌 Tkinter vs Swing

  • Tkinter는 Python의 표준 GUI 라이브러리입니다.
  • Swing은 Java의 GUI 라이브러리이며 MVC (Model-View-Controller) 디자인 패턴을 기반합니다.
  • 이들 라이브러리를 활용하는 기업을 특정하기는 어려우나 SW program 제작에 활발히 활용됩니다.


🔔 6. Image Processing

📌 Pillow vs BufferedImage

  • Pillow (PIL Fork)는 이미지 가공 목적의 Python 라이브러리입니다.
    Pillow는 이미지 가공, 전처리(processing), 증강(augmentation) 등에 사용됩니다.
  • Buffered Image는 이미지에 저수준(픽셀 단위)의 접근을 가능하게 하는 하나의 Java class입니다.
    Buffered Image는 고객의 신분증 사본, 전자 서명 등의 이미지 처리에 사용됩니다.

📌 OpenCV Python vs Java Binding

  • OpenCV는 C++ 언어로부터 개발되었으며 Python, Java 등의 언어로 라이브러리가 제공됩니다.
    Python의 OpenCV는 이미지 및 동영상 데이터의 처리 및 분석 기능을 제공합니다.
    Python의 OpenCV의 사용 사례는 얼굴 인식, 이미지 필터링 등이 있습니다.
    이는 Google 뿐만 아니라 필자가 개발중인 싱크홀(공동) 자동 분석 AI 모델에도 이용중입니다.
  • Java의 OpenCV 역시 좋은 이미지 및 동영상 데이터 처리 도구입니다.
    Java의 OpenCV는 안드로이드 및 데스크톱 애플리케이션 프로그램 개발에 활발히 사용됩니다.


🔔 7. Video Processing

📌 MoviePy vs Xuggler

  • MoviePy는 각종 동영상 편집 기능을 제공하는 Python의 라이브러리입니다.
  • Xuggler는 MoviePy와 비슷한 Java의 라이브러리였지만 현재는 개발이 중단되었습니다.
  • 따라서 Java에서 동영상 처리를 하기 위해서는 JavaCV 또는 JCodec 등의 사용이 권장됩니다.
  • 그런데 이들 라이브러리는 결국 FFmpeg라는 도구를 기반으로 합니다.
  • FFmpeg는 미디어 포맷 변환, 비디오 편집, 스트리밍, 코덱 변환 등 다양한 기능을 제공합니다.
  • FFmpeg는 또한 FFplay(미디어 재생), FFprobe(미디어 정보 분석)과 함께 기능을 지원합니다.


🔔 8. Graphic & Animation Processing

📌 Pygame vs Processing

  • Pygame은 가벼운 미디어 게임 개발 기능을 제공하는 Python의 라이브러리입니다.
    Pygame은 2D 게임 개발 도구로 SDL (Simple DirectMedia Layer) 라이브러리를 기반으로 합니다.
    Pygame은 보통 게임 개발 입문자들의 교육용으로 사용됩니다.
  • Processing은 애니메이션, 비주얼 아트 등 예술적인 미디어 제작을 위한 도구입니다.
    Processing은 그래서 기업보다는 교육자, 예술가, 연구 기관 등에서 사용됩니다.
    Processing은 Java 기반 도구이며 Processing IDE 등에서 사용되는 개별 프로그래밍 언어입니다.




이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
<>