Swing 프로젝트를 JavaFX로 마이그레이션하기 시작합니까?


13

Swing + SwingX로 작성된 4 세의 프로젝트가 있습니다. 현재, 그것은 여전히 ​​살아 있고 여전히 차고 있습니다.

그러나 더 많은 GUI 관련 기능 요청 (예 : 정렬 가능한 트리 테이블)이 나오면 요청을 채우는 데 어려움을 느끼기 시작합니다. 이는 SwingX 프로젝트와 관련하여 진행중인 개발이 없기 때문에 특히 그렇습니다.

또한, 훌륭하지만 적극적으로 유지 관리 / 개발 / 진행중인 GUI Java 프레임 워크를 거의 찾을 수 없습니다.

궁금한 점이 있습니다. Swing 개발자 중 누구도 같은 생각을합니까? Swing 프로젝트를 JavaFX와 같이 훨씬 활성화 된 GUI 프레임 워크로 마이그레이션하기 시작 했습니까?



7
당신이 그 스윙을 가지고 있지 않다는 것은 의미가 아닙니다.
Robert Harvey

스윙은 크로스 플랫폼입니다 ... javaFX2는 .. 사건이 종결되지 않았습니다.

@blanc은 Windows, Linux 및 OSX에서 사용할 수 있습니다. YanChenhCHEOK, TreeTable은 JavaFX 8 (올해 9 월, Java 8과 함께 출시됨)을 계획하고 있습니다.
assylias

답변:


9

개인적으로 JavaFX (불쾌한 스크립팅 언어가있는 오래된 이상한 1.x 버전이 아닌 2.1 이상)로 이동하고 있습니다. 새로운 JavaFX는 100 % 완벽하지는 않지만, Swing보다 사용하기에 이미 대단한 광경입니다. 합리적인 가격 (특히 내장 웹킷 엔진이 제공됨)을 봅니다.


9

나는 자주 같은 것을 묻지 만 기존 프로젝트를 JavaFX로 마이그레이션 할 것이라고 생각하지 않습니다. 적어도 지금은 아니지만 중소형 프로젝트에는 적합하지 않습니다. 그러나 새 프로젝트에 JavaFX를 고려하고 향후 마이그레이션을 다시 고려하고 JavaFX의 진행 상황에 따라 질문을 다시 평가합니다.

현재 내 관심사는 다음과 같습니다.

  • 미숙

    그렇습니다. 우리는 곧 3.0으로갑니다. 따라서 크고 위험을 회피하는 회사 소프트웨어의 경우 이는 상대적으로 아픈 부분입니다.

  • 공연

    성능 차이에 대한 충분한 하드 데이터를 보지 못했습니다.

  • 위젯 및 구성 요소

    나는 새로운 구성 요소에서 충분한 이득을 보지 못했습니다. 이것은 미숙과 관련이 있다고 생각합니다. 또한 Swing과 달리 얼마나 잘 확장되고 합성 될 수 있는지 아직 알지 못합니다.

전반적으로, 나는 이점에 대한 하드 데이터가 JavaFX에 완전히 확신하지 못하는 것 같습니다.

반면에 Swing은 입증 및 테스트되었습니다. 예, API는 어수선하고 JTextPane과 같은 Swing 객체에서 IDE의 자동 완성 기능을 호출하면 엄마를 위해 울고 울지 만 지식이 충분하다면 Swing으로 멋진 UI를 만들 수 있습니다. 실적이 좋았습니다 (나는 Swing-has-bad-performance fallacy를 구입하지 않았으며 Roma의 Guy의 이전 블로그 게시물을 Sun의 블로그에서 참조하십시오).

따라서 무엇이든 전환하기 전에 작은 프로토 타입을 먼저 시도하고 응용 프로그램 대화 상자 중 일부를 이식하여 어떻게 진행되는지 확인하는 것이 좋습니다.


5

나는 지금 많은 JavaFX를 해왔고 Swing보다 그것을 선호합니다. 장면 그래프 구조는 Swing에 익숙한 것과 다르지만 크게 개선되었습니다. API는 재미있어서 기분이 상쾌합니다.

멀티미디어, 애니메이션, 웹 브라우징으로 훨씬 더 많은 일을 할 수 있습니다. 예를 들어 html5 및 javascript를 포함하여 몇 줄의 코드 로 Google Maps 애플리케이션 을 빌드 할 수 있습니다 .

Java 8 런타임에 포함되어 있다고 말하는데, 이는 기본 UI 프레임 워크로서 Swing의 명확한 대체를 의미합니다.

@ 마이그레이션 : JavaFX로 변환 할 수있는 일부 응용 프로그램을 분리하여 시작해야합니다. Swing-JavaFX 2 상호 운용성은 큰 문제입니다. javafx.embed.swing.JFXPanel을 사용하여 JavaFX 요소를 임베드 할 수 있습니다. swing-fx-interoperability를 참조하십시오 . (완벽 성을 위해 SWT에 포함시킬 수도 있습니다.)


swing-jfx 상호 운용성을 시도하지 마십시오. 매우 버그가 있습니다. 내 응용 프로그램에서 시도했지만 netbeans에서 작동하지만 .jar을 직접 실행하려고하면 이상한 메모리 / 스레딩 관련 오류가 발생합니다. 내 의견으로는 신선하게 시작하십시오.
Upvote를 클릭하십시오.

4

Swing은 기존 기술이되고 있거나 이미 사용되고 있습니다. 그러나, 그것이하는 일에 아주 좋으며 가까운 장래에 사라지지 않을 것이므로, 특히 이미 투자 한 사람이라면 그로부터 멀어 질 이유가 없습니다. JIDE Software 는 표준 Swing에서 누락 된 것을 대체하기 위해 좋은 (상업용) Swing 구성 요소를 만듭니다. 예를 들어, 정렬 가능한 트리 테이블은 그리드의 그리드 에 있습니다.


3

새로운 JavaFX 버전은 매우 인상적이지만 GUI를 완전히 개선하기 위해 많은 시간 / 노력 / 돈을 투자하지 않는 한 전체 마이그레이션을 수행 할 가치가 있다고 생각합니다.

스윙에는 단점이있을 수 있으며 나이도 있지만 몇 가지 장점이 있습니다.

  • 현재 JavaFX보다 훨씬 우수한 매우 강력한 크로스 플랫폼 기능
  • JavaFX보다 훨씬 성숙하고 입증되었습니다.
  • 대규모 사용자 커뮤니티 / 라이브러리 생태계가 있습니다.
  • 이미 많은 스윙 기술을 보유하고 있거나 쉽게 사람들을 고용 할 수 있습니다.

궁극적으로 그것이 깨지지 않으면 왜 고쳐야합니까?

물론 새 프로젝트의 경우 JavaFX, Android 및 / 또는 웹 기반 GUI (Vaadin과 같은 것)를 매우 진지하게 살펴볼 것입니다.


JavaFX 크로스 플랫폼 기능에 문제가 있습니까?
Upvote를 클릭하십시오.

지난번에 JavaFX가 Windows, Mac 및 Linux에서 지원되는지 확인했습니다. 그 이외의 다른 플랫폼을 대상으로하는 경우 상태를 확인하는 것이 좋습니다 .. 광범위한 플랫폼 간 기능을 찾고 있다면 스윙은 여전히 ​​(2012 년 중반) 더 안전합니다.
mikera

관심있는 다른 플랫폼은 무엇입니까?
Upvote를 클릭하십시오.

1

나는 기존의 스윙 애플리케이션을 가지고 있지만 기본적으로 지원하지 않는 새로운 관용구와 인터페이스를 구현 해야하는 OP와 같은 입장에 있습니다. 이러한 응용 프로그램 중 가장 큰 것은 여러 가지 이유로 모듈화, MVC 및 이벤트 디스패치 구조 개선 등 여러 가지 이유로 리팩터링되었으므로 UI ​​코드를 다시 작성하는 데 완전히 반대하지는 않습니다. 그래서 나는이 문제에 대해 오랫동안 열심히 생각했습니다.

그러나 본질적으로 레거시 기술에 더 많은 시간과 노력을 투자하지 않으면 Swing으로 해결할 수없는 것들이 있습니다. 예를 들어 간단한 마우스 이벤트 이외의 새로운 터치 스크린 장치는 Swing 자체에서 지원되지 않습니다. Swing 기반 브라우저 구성 요소를 제공하는 것은 비슷하거나 번거롭고 내 경우에는 javafx-in-swing 접근 방식이 UI 이벤트 처리를 사소한 방식으로 복잡하게 만들기 때문에 옵션이 아닙니다.

나는 그것이 옛날에 오래되고 충실했다고 생각합니다. 플랫폼이 코드베이스만큼 변하지 않는다면 분명히 그것을 고수하십시오. 그러나 응용 프로그램이 새로운 최신 사용 사례로 나아가려면 JavaFX 2 이상이 필자의 경우 앞으로 나아갈 길입니다.

부수적으로 : Swing에서 나는 jfx에서 사라지고 싶었던 하나의 잘못된 기능은 UI 이벤트 디스패치에 대한 하나의 스레드 대 규칙입니다. 사소한 사용자 인터페이스는 UI를 선명하고 반응 적으로 유지하기 위해 멀티 스레딩이 필요하며 API IMHO에는 부족한 부분이 있기 때문에 응용 프로그램 개발자가 동일한 함정을 쉽게 극복 할 수 있습니다.


0

데스크톱 기반의 대규모 응용 프로그램에서 RCP 를 사용해 본 경험이 있습니다 . 기본적으로 Eclipse의 GUI 계층의 추상화로 시작되었으며 그 이후로 먼 길을 왔습니다. RWT는 AWT를 기반으로하는 Swing 대신 JFace를 기반으로하며 SWT를 기반으로합니다. 애플리케이션을 개발하고 Eclipse 자체에서 사용하는 GUI 개념 (보기, 편집기, 관점, 마법사 등)을 사용할 수 있습니다. 확장 성이 뛰어나며 Eclipse 자체와 마찬가지로 지속적으로 개선되고 있습니다.

그러나 기존 프로젝트를 Swing에서 RCP로 마이그레이션 한 적이 없습니다. 다른 패러다임을 둘러싼 머리를 감싸는 데 꽤 오랜 시간이 걸릴 것이라고 생각합니다. 모델과 레이어를 잘 분리하지 않으면 어려움을 겪을 수밖에 없습니다. 그러나 정렬 가능한 트리 테이블과 같은 것에 대해 질문했기 때문에 RCP가 그 점을 잘 알고 있습니다.

이 내용을 다시 연구하려면 Lars Vogel의 자습서 를 사용해 보거나 RCP를 사용하는 오픈 소스 프로젝트 또는 상업용 프로젝트의 예를 살펴보십시오 .


-2

(예를 들어 정렬 가능한 트리 테이블) 요청을 채우는 데 어려움을 느끼기 시작합니다. 이것은 특히 SwingX 프로젝트를 중심으로 진행중인 개발이 없다는 것이 사실입니다.

  • 사실이 아닙니다. 다시이 프로젝트가 살아 있습니까?

  • SwingX가 Sun의 지원금을 잃어 버렸을 때 blablabla (Sun의 도움을받는 동안) SwingX의 사람들은 JavaFX를 구축했습니다.

또한 GUI Java 프레임 워크를 적극적으로 유지 관리 / 개발 / 진화하고있는 제품을 거의 찾을 수 없습니다.

  • 스윙은 프레임 워크가 아니라 룩앤필에 관한 것이 아닙니다.

  • 프레임 워크는 비 기술적 인 사용자를위한 것입니다 (MsAccess는 GUI 프레임 워크의 가장 좋은 예일 수 있습니다)

  • 그러나 실제 응용 프로그램을 구축하려면 Swing 및 override에 대한 강력한 지식이 Framework에서도 제공됩니다.

  • 재미있는 예제 Netbeans에는 JSR296을 기반으로하는 내장 Swing 프레임 워크가 있지만 JFrames 아이콘을 직접 변경할 수는 없습니다.

Swing 프로젝트를 JavaFX와 같이 훨씬 활발하게 개발 된 GUI 프레임 워크로 마이그레이션하기 시작 했습니까?

이유가 없다

  • Java7로 마이그레이션하는 것과 동일합니다. Java7.15-17

  • JavaFx와 Nimbus를 비교하고 개발은 상반기 어딘가에 끝났습니다.

  • 죄송합니다. 저는 개발자가 아닙니다. 저는 Java & Swing Fan입니다.


MsAccess는 GUI 프레임 워크입니까?
Cheok Yan Cheng

ㅎㅎ 그렇지 ??? 무엇이 문제, 플랫폼 차이 또는 ei ??? 첫째 자바 GUI 프레임 워크는 매우 유사했다
mKorbel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.