웹 개발에 Java가 좋은 선택은 언제입니까? [닫은]


35

웹 개발에 Java가 좋은 선택은 언제입니까?

"Java 만 알고있는 개발 팀이있는 경우"라고 말하지 마십시오.


5
Java를 웹 개발 언어로 만드는 기능은 무엇입니까?
Abimaran Kugathasan

1
Java를 사용하는 것의 약간의 단점은 시장에서 사실상 지배적 인 프레임 워크가 없다는 것입니다. Struts가 다시 시작한 것처럼 Java 기반 프레임 워크는 실제로 최고 수준으로 올라가지 않았습니다. 개인적으로 Spring 앱이나 Grails와 함께 다른 작업을하고 있다면 언제든지 Spring MVC에 의존합니다 (언제든지 Java를 호출 할 수 있음).
Martijn Verburg

이 질문에서 갑자기 25 점이 나왔습니다!
Gulshan

기존 오픈 소스 소프트웨어를 고려하고 있습니까?
jonathan

2
"스트럿츠가 그날 다시 돌아 왔던 것처럼": 오늘날 스트럿츠를 사용하는 데 어떤 문제가 있습니까?
Giorgio

답변:


35

사용 가능한 많은 프레임 워크, 플랫폼의 성숙도 등을 감안할 때 "거의 항상"이라고 말하고 싶습니다. Java를 사용하지 않아야하는 몇 가지 이유는 다음과 같습니다.

  • 순수한 MS 상점으로서, 당신은 아마 .net 방법으로 그것을 선호합니다
  • 가장 저렴한 웹 호스트가 필요한 경우 PHP를 선택했을 것입니다.
  • 가능한 한 빨리하고 싶다면 Ruby on Rails, Grails 또는 Django가 필요에 더 적합 할 것입니다.
  • 개발 팀이 XYZ 만 알고 있다면 XYZ! = Java 인 경우 XYZ를 사용하는 것이 좋습니다.

7
따라서 MS 상점이 아니고 호스팅 비용을 부담하고 Java를 사용하여 개발할 시간이 충분하며 Java 개발자가있는 경우 Java를 사용합니다. 괜찮습니까?
굴샨

Gulshan : 예, 당신은 그렇게 할 수 있습니다
user281377

3
부풀어 오르고 기업 적이며 Java와 같은 다른 많은 이유가 있습니다 (스칼라 또는 JVM에 다른 것을 사용하는 경우 마지막은 무시할 수 있음).
Raynos

1
@Raynos 그래서 당신은 대신 무엇을 추천합니까?

2
@ ThorbjørnRavnAndersen은 실제로 요구 사항이 무엇인지에 달려 있습니다. 요구 사항이 일반적인 (틈새가 아닌) 경우 개발자와 서버에 가장 편리한 플랫폼을 사용하십시오.
Raynos

19

Java 중소 웹 사이트에서 사용됩니다. 중요한 점은 PHP보다 Java 웹 사이트에 대한 무료 웹 호스팅이 훨씬 적다는 것입니다. 즉, 자신의 웹 서버를 호스팅하기에 충분한 리소스가 없으면 Java를 선택하지 않을 것입니다.

Java EE 6, 특히 웹 프로파일에는 많은 코딩 없이도 매우 강력한 웹 응용 프로그램을 만들 수있는 많은 표준 기술이 포함되어 있습니다. 불행히도 아직 주류는 아닙니다.

Google 애플리케이션 엔진으로 인해 최근에 약간 변경되었으므로 트래픽이 적거나 중간 정도 인 트래픽 사이트에 대해 표준 Java 웹 애플리케이션 (몇 가지 제한 사항이 있음)을 클라우드에 무료로 배포 할 수 있습니다.


모든 경우에 무료 웹 호스팅에서 내 웹 사이트를 호스팅하지는 않습니다. 그러나 유료 자바 웹 호스팅에 문제가 있습니까? 예를 들어 매우 비쌉니까?
Goma

1
@saeed은 아닙니다. 대부분의 사람들은 가장 저렴한 옵션과 코드를 사용합니다.

예를 들어, jave는 다른 것보다 훨씬 비쌉니까? java에 대한 공유 호스팅이 있습니까?
Goma

@Saeed, 공유 LAMP 인스턴스를 만들 수있는 것처럼 단일 Linux 및 Windows 상자에 많은 JVM을 그룹화 할 수없는 기술적 이유가 있습니다. 즉, 호스팅 된 JVM이 호스팅 된 LAMP보다 비싸다는 것을 의미합니다. Google은 다른 JVM을 사용하여 무료로 제공 할 수 있습니다.

@ Thorbjörn : Google의 기능에 대한 링크가 있습니까? 나는 그들이 Jetty를 사용한다고 들었지만 그들의 해결책에 대해 더 많이 모른다.
Jonas

12

플랫폼이 UNIX / Linux이고 객체 / 관계형 매핑, 보안, 복잡한 웹 서비스 오케스트레이션 등과 같은 다양한 도구가 필요한 경우.
(우리는 단순한 웹 사이트에 대해 이야기하는 것이 아닙니다. 우리입니까?)


1
스크립팅 언어에서도이 자료를 얻을 수 있습니다. Python과 SQLAlchemy를보십시오. 심지어 Rails는 ORM (ActiveRecord)을 사용하며 보안이 우수합니다.
Brian D.

3
실제로, 나는 그들이 최대 절전 모드, 스프링 프레임 워크, BPEL 프레임 워크만큼 강력하다고 생각하지 않습니다.
Sorantis

1
비 UNIX / Windows에서 Java의 문제점은 무엇입니까?
Tom Hawtin-tackline

2
아무것도. 그러나 Windows에는 .NET이 있습니다
Sorantis

2
-1 다른 대안들과 마찬가지로 적절한 도구를 사용할 수없는 것처럼 들립니다.
Raynos

9

또 다른 Java 팀이 나를 화나게 할 때마다 나는 이와 같은 질문을 찾아 증기를 날려 버립니다. 다시 말씀 드리겠습니다. 나는 클라이언트 측 개발자이며 5 년 가까이되었습니다. 일회성 콘텐츠 마이크로 사이트부터 시어스 (Seears)와 같은 대규모 사이트까지, 깊이있는 UI 전문 지식이 필요한보다 정교한 앱 유형 사이트까지 다양한 사이트에서 작업했습니다. 나는 Rails, PHP, .net 웹 폼 (ew), .net MVC (훨씬 낫다) 및 웹 개발을위한 Java 솔루션의 꽃다발 배열을 다루었 다. 나는 또한 약간의 파이썬을 작성하고 장고를 파기 시작했다.

Java 팀에 대한 나의 경험은 보편적으로 끔찍했습니다. 도구는 항상 PITA입니다. 개발자들은 자신이 잘못한 것을 믿기를 원치 않으며, 끝에서 문제를 배제한 후에는 자신의 잔디를 다시 조사하도록하는 것이 이빨을 당기는 것과 같습니다. 내 경험에서 Java 팀을 다루는 첫 번째 희생자는 개발 시간이 전자 메일 시간으로 변환되어 문제가 왜 끝났는지에 대한 여러 가지 긴 설명을 작성하는 것입니다. HTML을 실제로 제어하지 않으면 HTML은 일반적으로 문제가되지 않습니다. 그런 다음 실제로 일부 상위 수준 div를 이동하고 싶기 때문에 모든 것이 결국 끝날 것입니다.

내가 싫어하는 언어에 관한 것들이 있지만 실제 문제는 문화이며 수용이 너무 광범위하다는 사실은 중간 정도의 평범함을 가지고 있습니다. 내가 생각하는 문화는 자바가 판매되는 방식에서 비롯된다. 한 번 쓰고 어디서나 배포하십시오. 번역 : "한 가지만 배우면됩니다!" 매력적인 사람들은 기본적으로 웹 개발과 관련하여 공예를 최소한으로 연마하면서 손톱마다 Java를 하나의 거대한 망치처럼 사용하기를 원합니다.

따라서 Java 및 기타 언어를 알고 있지만 실제로 Java를 선호하는 개발자가 있다면 올바른 솔루션처럼 보이는 경우 계속 진행하십시오. 그러나 Java를 아는 Java 개발자가 있고 그 밖의 모든 것이 실제로 이력서의 요점을 만들기위한 기준을 거의 충족시키지 못하면 HTML 끝에 다양한 반 복잡한 페이지가있는 간단한 응용 프로그램을 작성하고 시도하십시오. 간단한 테스트. HTML을 끊으십시오. 그들이 무엇이 잘못되었는지 알아 내도록하십시오. 그들이 해결하기 시작한 즉각적인 문제가 스스로 비난을 피하고 있다면 웹 개발에서! @ # $를 멀리하십시오. 웹 개발은 여러 분야를 다루며 해당 분야에 대한 적극적인 관심이 필요합니다. 한 언어에 대한 지식 만 유지하고 싶어하고 문제 해결에 관심이있는 것보다 더 끔찍한 사람들에게 적합한 곳은 아닙니다.

Java 자체가 무능의 근원이라고 주장하지 않으며 Spring이 좋다고 들었습니다. 유능한 Java 팀이 있다고 확신합니다. 나는 아직 하나에 빠지지 않았고 그것이 우연의 일치라고 생각하지 않습니다. 나는 Sun이 그것과 많은 관련이 있다고 생각합니다. 또한 IT 부서와 같이 또는 IT 부서에서 웹 팀을 운영하는 것과는 많은 관련이 있다고 생각합니다.


1
나는 당신이 묘사 한 것과 같은 문제가 있지만, 그것이 프로그래밍 언어에 달려 있다고 생각하지 않았습니다. 예를 들어 PHP를 프로그래밍하는 사람들이 더 개방적이고 유연하다고 생각하십니까?
Виталий Олегович

PHP는 개발자에 대해 100 %, 주변 문화에 대해서는 덜 중요합니다. 핵심의 일관성 부족을 좋아하지는 않지만 Java 팀을 신뢰하지 않는 방식으로 웹 개발을위한 중간 레벨 PHP 팀의 작업을 신뢰합니다. 그것은 숙련 된 PHP 개발자가 웹과 다른 사람과 함께 일한 것 같지 않은데 도움이 될 것입니다. Java 문제는 부분적으로 언어의 고유 강성 때문일 수 있지만 솔직히 Java 개발자 교육, Java 솔루션 채택 및 Java 개발자 채용 방법의 성격에 관한 것입니다.
Erik Reppen

1
@Erik Reppen : 경험을 지나치게 일반화하고 있다고 생각합니다. Java 팀이 다른 언어로 작업하는 팀보다 나쁘거나 최소한 평균보다 나쁘지 않다고 생각합니다. Java를 많이 사용하는 두 개의 매우 좋은 상점을 알고 있습니다. 첫 번째는 Java 및 Ruby로 프로젝트를 수행합니다 (각각 약 50 %). 두 번째는 주로 Java에서 작동하지만 Scala 및 Common Lisp에서 개별 프로젝트를 수행했습니다.
Giorgio

@Giorgio 나는 이것을 놓쳤지만 .NET, Rails, Java 및 PHP를 통해 백엔드를 처리하는 다른 사람들과 협력했습니다. 나는 다른 언어에 대한 일회성 경험을 세지 않고 크 래피 개발자는 분명히 Java 고유의 ​​것이 아닙니다. 또한 내가 말한 것처럼 100 % 확신하는 Java 팀이 있습니다. 누군가는 그것을 빨지 않아도되지만 IMO는 지나치게 일반화되지 않습니다. 중간 수준의 Java 개발자에 문제가 있습니다. 내 경험으로는 문화 현상입니다. 문제가있는 개발자를 알지 못하는 한 Java 상점에서 일하는 것을 중단 한 그런 불쾌한 것입니다.
Erik Reppen

5

Java는 소규모 웹 사이트에 완벽하게 적합합니다 . 예를 들어 Tomcat 과 같은 Java 웹 서버에서 JSP 페이지를 매우 빠르게 작동시킬 수 있습니다 .

내 경험상 Java는 복잡한 서버 측 처리가 더 필요한 대형 웹 사이트에서 더 일반적이지만이 경우 JSF (JavaServer Faces)와 같은보다 정교한 Java 프레임 워크가 사용됩니다.

역사적으로 전체 Java 설치를 저렴한 웹 호스팅 설정에서 사용할 수 없었기 때문에 이러한 환경에서 PHP와 같은 다른 언어의 유병률을 설명 할 수 있습니다.


이것은 자바 웹 애플리케이션을 호스팅하는 것이 너무 비싸다는 것을 의미합니까? 아니면 PHP만큼 저렴하지 않습니까? Java에 대한 좋은 weh 호스트 링크를 제공하여 가격을 볼 수 있습니까? 검색했지만 표준 가격이 어느 것인지 알 수 없으므로 큰 그림을 볼 수 있습니다.
Goma

1
Java 웹 응용 프로그램을 호스팅하는 것은 비용이 많이 들지 않으므로 Java 응용 프로그램을 실행할 수있는 호스팅 공급자 만 있으면됩니다. 컴퓨터에 로그인 계정을 얻는 Linux 호스팅 환경은 괜찮을 것입니다. 개인적으로 Java 호스팅을 위해 Amazon Web Services에서 Ubuntu를 사용합니다.
mikera

2

웹 개발에서 Java를 사용하는 주요 이유는 다음과 같습니다.

  • 고객이 요구합니다. 더 좋든 나쁘게도 일부 클라이언트에는 "허용 된 기술 목록"이 있으며 해당 목록에없는 것을 제안하는 경우 왜 그 목록에있는 것을 사용할 수 없는지에 대한 설명이 더 좋습니다.
  • Windows에서 개발하고 Unix에 배포하십시오. 대부분의 개발 시스템은 Windows, 일부는 Mac, Linux는 거의 없습니다. 일반 클라이언트 시스템에서와 마찬가지로. 그러나 서버에서는 Windows 서버처럼 어떤 형태의 유닉스를 보게 될 것입니다. Java는 아마도 언제 어디서나 한 번 배포하는 것이 가장 가깝습니다 (완벽하지는 않지만 일부 대안보다 낫습니다).
  • 관리 선택. 다른 언어보다 Java를 선택하는 것은 언어의 장점에 전적으로 의존하는 것보다 프로그래머를 찾고 프로젝트를 떠나는 팀원을 대체하는 것과 더 관련이 있습니다.

# 2 정보 : IDE를 올바르게 구성하십시오. Eclipse는 Linux 서버에서 혼란을 가져올 수있는 일부 창 파일 인코딩을 기본값으로 설정하는 어리석은 아이디어를 가지고 있습니다.
Eldelshell

실제로 특정 파일의 위치와 운영 체제와 상호 작용해야 할 때에 대한 가정을 언급했습니다.
Berin Loritsch

"C는 아마도 언제 어디서나 배포 할 수있는 가장 가까운 것"이라고 나는 당신을 위해 고쳤다.
Raynos

그것이 사실이라면 @Raynos. 불행히도, 모든 플랫폼에서 동일한 표준 라이브러리를 가지고 있지 않는 한 사실이 아닙니다. 핵심 C 언어는 이식성이 뛰어납니다. 그러나 스레드 별 작성, 소켓 열기 또는 UI 요소 작성과 같은 OS 고유의 항목은 API에 간단한 재 컴파일로 이식 할 수없는 항목이 있습니다. Java를 사용하면 다시 컴파일 할 필요가 없으므로 새 시스템 API를 사용하도록 코드를 변경하는 것이 훨씬 줄어 듭니다.
Berin Loritsch

@BerinLoritsch 40 년 후에는 간단한 재 컴파일만으로 크로스 플랫폼에서 작동하는 OS 관련 사항에 대한 일반 API가 없다고 말하는 것입니까? 그래도 80 년대에 그것이 사실이라고 상상할 수 있습니다.
Raynos

2

기술적으로 말하면 :

  • 핫스팟 옵티 마이저에 적합한 아키텍처를 정의 할 수있는 경우
  • 거대한 OO 오버 헤드가 필요하다고 생각되면 Java가 부과합니다.

웹 애플리케이션을 시작하는 경우 Ruby on Rails를 사용하고 RoR이 성능 스케일링 한계에 도달 할 때 핫스팟을 교체 할 수있는 방식으로 설계합니다.

Java는 확실한 COBOL 냄새를 가지고 있으며 "저가형 코더는 Java를 사용합니다"라는 말이 있으며 Oracle fiascos는 명성을 돕지 않습니다. 선택여지 가 있다면 최고의 개발자를 유치하는 언어를 선택하십시오.


"최고의 개발자를 끌어들이는 언어를 선택하십시오." 예?
Eldelshell

1
@ Ubersoldat : ​​Go, Ruby, Clojure, Haskell, Python은 모두 그렇게하는 언어입니다.
Paul Nathan

파이썬은 실제로 자바가 척하는 많은 것들에서 성공하기 때문에 좋습니다. 그리고 다른 언어로 문제를 해결해야 할 때 다른 사람들과 잘 어울리는 것은 어렵지 않습니다. Ruby에 대해서는 잘 모르지만 Rails 개발자는 내 경험상 문제가 있습니다. JQuery 효과입니다. 자신이하는 일을 아는 사람들은 오른손에 빠르고 효과적이기 때문에 그렇게하고 있습니다. 많이 알 필요가 없기 때문에 자신이하는 일을 모르는 사람들.
Erik Reppen

@Erik Reppen : 반면, 언어로서의 Ruby는 Python보다 훌륭하고 일관된 디자인을 가지고 있습니다. 나는이 언어 비교가 종종 맛의 문제라고 생각하며 더 친숙한 언어를 선호하는 경향이 있습니다.
Giorgio

0

간단합니다. 백엔드 성능이 중요한 문제인 경우 Java를 사용하십시오. 코딩 할 때 더 많은 오버 헤드가 있지만 코드는 문자 그대로 1 / 200 ~ 1 / 500 일에 실행됩니다. PHP, Ruby 및 기타 동적 유형 언어는 항상 Java 또는 .net 서버보다 속도가 느립니다.

웹을위한 대부분의 솔루션에는 이것이 필요하지 않습니다. 트위터는 예를 들어 인기가 정점에 도달하기 전까지 레일즈를 포기하지 않았습니다.


-1

유일한 이유는 아니지만 서버에서 로직을 수행하면서 로직과 같은 정교한 응용 프로그램과 같은 프런트 엔드로 웹 사이트를 구축하는 인기가 높아짐에 따라 Java가 왜 다른 것과 동등한 지 설명 할 이유가 없습니다. 서버 쪽의 옵션. 그러나 클라이언트 측에서 자바 스크립트가 코드 유지 관리 악몽으로 빠르게 변하고 GWT를 사용하여 그 길이를 유지하여 Java로 코딩 할 수 있다면 서버로 두 세계를 모두 활용할 수 있습니다 그들에게 '경험'을주는 무거운 물건 들기와 고객의 프로세서를하는 것. jQuery와 같은 것을 통합하는 방법을 배우고 원하는 모든 눈 사탕을 가질 수 있습니다.

대안에 대한 전문가는 아니지만 다른 사람이 같은 종류의 유연성과 폭을 가진 사람을 제시 할 수 있다면 기꺼이 들으십시오.



2
"자바 스크립트가 코드 유지 보수 악몽으로 변함"에 대해 -1은 Java 개발자가 교육이나 학습 JavaScript없이 자바 스크립트를 작성하게하는 부작용입니다. GWT의 주요 단점은 추상화가 새기 때문에 모바일 장치에서 잘 작동하도록하는 것이 행운입니다.
Raynos

Java의 강성 (IMO)의 문제점은 코드가 처음부터 강제로 구성되는 이유를 이해하지 못하는 많은 개발자로 끝납니다. 모든 것이 OOP처럼 보일 때, 때로는 피할 수없는 결과는 실제로는 아무것도 없다는 것입니다.
Erik Reppen

-1

Java를 선택하는 주된 이유는 분산 트랜잭션을 사용해야하는 경우가 많기 때문에 많은 회사에서 큰 문제가 될 수 있습니다. 그러나 여전히 웹 개발에 선호하는 스크립팅 언어를 사용할 수 있으며 속도 / 분산 트랜잭션이 필요한 경우에만 작업을 Java로 위임 할 수 있습니다.


-1

많은 사람들이 복잡한 모듈, 복잡한 비즈니스 논리를 가지고 응용 프로그램을 개발할 때 응용 프로그램이 매우 복잡해질 때 많은 다른 응용 프로그램과 통신해야 할 때라고 생각합니다.

어쨌든 Grails에서도 개발할 수 있습니다. Grails는 멋진 기능을 많이 제공하고 개발을 용이하게하며 빠르게 발전하고 있습니다.


-1

Java는 괜찮지 만 성능이 중요하지 않은 경우 다른 언어로 적은 노력으로 동일한 결과를 얻을 수 있습니다.


2
C로 작성해야하고 Java가 아닌 어셈블리로 작성해야 할 때 "성능은 결정적으로 중요하지 않습니다".
Raynos

벤치마킹 대 경험, Java 사이트는 클라이언트 측 개발자로서의 경험에서 최악의 성과를 보였습니다. 그래도 언어 수준 이상의 인재 수준 문제 일 수 있습니다.
Erik Reppen

2
@ErikReppen : 확실히 재능있는 것. 서버의 Java 속도는 C / C ++에 이어 두 번째입니다. PHP 또는 Rails는 비교할 수 없습니다. 그러나 Java의 라이브러리와 일부 도구를 사용하면 쓸데없이 복잡한 작업을 수행하는 속도를 모두 잃기 쉽습니다.
Zan Lynx

-1

Java는 정적 인 유형의 언어이며, 회사에 MSDN 구독이없는 경우 웹 개발에 사용되는 다른 정적 인 유형의 언어 (C # 및 VB.net)보다 저렴합니다. 정적으로 유형이 지정된 언어는 중대형 프로젝트, 복잡한 도메인 규칙 및 많은 백엔드 코드에 적합합니다. 클래스를 더 잘 구성 할 수 있고 IDE가 코드에서 오류를 찾는 데 도움이되기 때문입니다.

PHP, Python, Ruby와 같이 동적으로 유형이 지정된 언어를 사용하면 개발 속도가 훨씬 빨라지지만 코드를 훨씬 더 잘 테스트해야합니다. 시간과 돈이 많지 않고 요구 사항이 매우 빠르게 변하고 매우 복잡한 계산을 수행 할 필요가없는 경우 동적 언어가 훨씬 좋습니다.


-2

보안

대기업이 다른 솔루션보다 Java를 선택하는 주된 이유는 훨씬 더 안전한 것으로 간주되기 때문입니다.

주로 대기업 (현재 오라클)이 지원하기 때문입니다.

Java는 매우 높은 수준의 보안과 탁월한 지원 및 분석을 제공한다는 점을 고려해야합니다 (가격이 비싸더라도).


7
어 .. 보안은 언어 자체에서 또는 마법에서 비롯된 것입니까?
Mchl

1
당신은 오라클이 Java 서블릿 컨테이너의 유일한 공급자가 아니라는 것을 알고 있습니다.
Mchl

6
신성한 전쟁! 싸워라 싸워라!
abel

2
@Mchl 일부는 언어 또는 VM에서 나옵니다. Java 앱 서버를 대상으로 한 버퍼 오버런 해킹을 몇 번이나 보셨습니까? 노력할 가치가 없습니다. 말 하건데, Java는 "업계"에 비해 보안 성이 더 높은 것으로 간주되며, 잘못된 보안 감각은 어려울 수 있습니다.
biziclop

1
여기서 요점은 언어로서의 Java와 Java 런타임 환경을 구별해야한다는 것입니다. 다른 언어보다 Java 언어를 더 안전하게 만드는 것은 없습니다. 반면 JVM은 Java 바이트 코드 실행을 '샌드 박스'하도록 설계되었지만 보안은 특정 구현에 따라 다릅니다. 그러나 잘못된 보안 감각에 대한 좋은 지적.
Mchl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.