👁️
pierreinside
  • Introduction
  • Workbench
    • VirtualBox
    • Linux
      • Linux-Paketverwaltung
      • Linux Initialisierung
      • Ubuntu 14.10 LTS
      • Ubuntu 16.04 LTS
      • Ubuntu 18.04 LTS
      • Ubuntu 20.04 LTS
      • Ubuntu - Netzwerk
    • Konsole
      • ssh
      • zsh
      • cygwin
      • Babun
      • terminator
      • Terminal Multiplexer
      • Linux Tools
    • awesome
    • Entwicklungsumgebungen
      • Texteditors
      • Visual Studio Code
      • IntelliJ - IDEA
  • Softwareentwicklungsprozess
    • Schätzungen
    • Eventstorming
    • OKR
  • Architektur
    • Uncle Bob
    • Microservices
    • NoSQL
      • ElasticSearch
    • Hystrix
    • Reactive Programming
    • AngularJS
    • Service Mesh
  • Networking
    • Dependency Injection
  • Programming
    • Java Core/EE
      • Java 8
      • Java Annotationen
      • Bean Validation
      • Enterprise Java Beans Specification
      • Dependency Injection
    • JRebel
    • Webservices
      • HTTP
      • REST
      • Spring MVC REST
      • Swagger
      • Postman
    • Spring Ecosystem
      • Spring Core
      • Spring Boot
        • Programming
        • Production Ready
        • Testing
      • Spring Cloud
      • Spring Cloud Config
      • Spring MVC
      • Spring Data
      • Spring Petclinic
    • NodeJS
    • UI-Technologie
      • Thymeleaf
      • ionic
      • Web Fonts
      • Jinja Templates
      • Twitter Bootstrap
    • Python Ecosystem
      • Python Libraries
      • Python Testing
      • Python Best-Practices
      • Python Snippets
      • Python Selenium
      • Kivy UI
      • FastAPI
      • Typer CLI
      • Django
    • Groovy
    • Persistenz
      • Transactions
        • Java TX
        • JPA TX
      • TX Handling
      • JPA
        • Eclipse Link
      • MySQL
        • MySQL Performance
        • Docker MySQL
      • Hazelcast
    • Glassfish
    • YAML
    • Angular
    • Camel
    • Zeichenkodierung
    • Kinder lernen Programmieren
  • Testen
    • Easymock
    • Mockito
  • Performance & Scalability
    • Java Performance
      • Heapdump Analysis
    • Java Concurrency
    • Instana
  • Sicherheit
    • Authentifizierung
      • OpenID Connect
      • Web-Authentication API
    • Authorisierung
      • OAuth
      • SAML
    • Spring Security
    • Zertifikate
    • Kali Linux
    • VPN
    • Zero-Trust-Networks
  • Build und Deployment
    • Maven
    • Bamboo
    • Jenkins
      • Jenkins Pipelines
      • Jenkins Pipelines Tips und Tricks
      • Jenkins-configuration-as-Code
      • Jenkins IDE
    • Travis CI
    • Shellprogrammierung
      • jq - JSON Parsing
    • Konfiguration Management
    • Vagrant
      • Vagrant-Ansible-Integration
      • Vagrant Box bauen
    • Ansible
      • Getting Started
      • Ansible Details
    • Saltstack
    • LinuxKit
    • Container
      • Docker
        • Docker Getting Started
        • Debugging Docker
        • Docker Build
        • Docker Registry
        • Docker run
          • docker run
          • docker network
        • Docker Compose
        • docker machine
        • Docker@Windows
        • Docker Host
        • Docker Scaling
        • Docker Ressources
        • Docker Logging
        • windowsContainer
      • Cloud Deployment Provider
        • AWS
          • Anwendungsdeployment
          • Workload
          • Permissions
          • Netzwerke
          • AWS CLI
            • aws-vault
          • RDS
          • Static Website Hosting
          • EKS - Elastic Kubernetes Service
          • S3
        • Google Cloud Platform
      • Docker Orchestrierung
        • CoreOS
        • Kubernetes
          • microK8s
          • minikube
          • autoscaler
          • Docker
          • k9s
        • Nomad
    • PHP
  • Operations
    • Proxy
      • NGINX
    • DNS
    • Logging
      • Graylog
      • Fluentd
    • Monitoring
      • Grafana
    • Infrastructure-as-Code
      • Terraform
        • AWS-Provider
        • GitHub-Provider
      • Packer
    • Deployment
      • Vault
      • Consul
        • Consul Template
      • Fabio
  • Rechtliches
    • Software-Lizenzen
  • Git Ecosystem
    • Git
      • Git Lifecycle Hooks
    • GitHub
      • GitHub Organizations
    • GitHub Actions
    • GitHub Pages
    • GitHub CLI
    • GitHub Copilot
    • GitHub-AWS OIDC
    • GitBook
    • GitLab
    • Bitbucket/Stash
  • Publishing
    • WordPress
    • Markdown
    • Static Site Generators
      • Hugo
      • Jekyll
    • Tiddly Wiki
    • Leanpub
    • Animationsfilme
  • Storage
    • Synology 2012
    • Synology 2021
  • Collaboration
    • Übersicht
    • Microsoft Teams
  • Konferenzen
    • Velocity Berlin 2019
  • IT mit Kindern
    • Projekt Sportstracker
    • Scratch
    • Pico Spielekonsole
  • Schule
    • Mathematik
  • Misc
    • Foto/Video
      • Foto/Video Sammlung bis 2023
        • Handbrake
        • Onedrive
      • Foto/Video Sammlung ab 2024
      • Gopro
      • Panasonic FZ1000 ii
        • als Webcam
      • AV Receiver
      • Videos erstellen
        • OBS Studio
        • Touch Portal
        • Game-Streaming
      • Kameratasche
      • Kamera 2020
    • Handy
      • 2016
      • 2018
      • 2019
      • 2021
      • 2022
    • Computer
      • Laptop
        • 2018
        • Chromebook
      • Monitor
        • 4k
      • Software
        • Command Line Interface
        • Google API
        • Plant UML
        • Chromium
        • Passwort-Manager
        • GPG
      • Dell CNF 2665 Farbdrucker
      • Dockingstation
      • Gaming PC 2021
      • Mobiles Büro
      • Mobiles Internet
      • Mobiler Router
    • Beamer Benq W1000+
    • Spielekonsole
      • 2017
        • Playstation 4
      • Pico Spielekonsole
    • Gadgets
      • iPad Pro 2015 und 2016
      • iPad Air 2024
      • Macbook Pro
      • Smartwatch
      • Slate
      • Mudi
    • Fahrrad
      • Jonas 2018
      • SQLab
    • Auto
      • Auto 2022
      • Camping
        • Camping Touren Ideen
          • Camping Tour - Gardasee 2021
        • Camper
          • Camper klein - keine Stehhöhe
            • VW Bus Erfahrungen
          • Camper gross - Stehhöhe
    • Haus
      • Klimaanlage
      • Swimming Pool
      • Quick Mill Orione 3000
      • Spülmaschine 2021
      • Hebe-Schiebetür
      • Gasgrill
      • Minibar / Mini-Kühlschrank
      • Glasfaseranschluss (Fiber-to-the-Home)
      • Smart-Home
        • Raspberry Pi
        • Heimnetzwerk
      • Homeoffice
      • Energie
        • Solar
        • Wärmepumpe
    • Freizeit
      • Musik Streaming
      • Sky
      • Online Lernplattformen
      • eScooter - ePowerFun
    • Fußball
      • Meine Arbeit als Fußball-Trainer
      • Fußball Tools
      • DFB Talentförderung
    • Google Impact Challenge
  • Englisch
Powered by GitBook
On this page
  • Umstieg von Eclipse auf IDEA - Motivation
  • Installation
  • Konfiguration
  • Problem 1: Inotify Watches Limit
  • Problem 2: Eclipse Projekt einbinden
  • Problem 3: awesome Windows Manager
  • Problem 4: awesome ... geöffnete Fenster
  • Problem 5: Keyboard Shortcuts
  • Problem 6: Autoscroll to/from Source
  • Erster Eindruck
  • Konzepte
  • Maven
  • Fazit

Was this helpful?

  1. Workbench
  2. Entwicklungsumgebungen

IntelliJ - IDEA

Umstieg von Eclipse auf IDEA - Motivation

  • Guide

Ich war es mit Eclipse langsam leid bei sehr großen Anwendungen immer wieder in OutOfMemory Probleme zu laufen, obwohl es sich schon 6 GB gönnte. Lange wollte ich IDEA mal ausprobieren und jetzt war ich endlich genug angenervt. Zudem klappte die Einbindung meines selbstgeschriebenen AnnotationProcessors nicht ... bei den Kollegen mit IntelliJ klappte es out-of-th-box.

Installation

keine besonderen Vorkommnisse (Ubuntu Linux) ...

Konfiguration

${IDEA_HOME}/bin/idea.vmoptions

Problem 1: Inotify Watches Limit

  • https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit

Die Meldung wurde mir von IDEA angezeigt und die angegebene Lösung (fs.inotify.max_user_watches = 524288) klappte auf Anhieb.

Problem 2: Eclipse Projekt einbinden

Bei Open ... konnte ich kein Projekt öffnen, das ich zuvor schon in Eclipse eingebunden hatte. Das gleiche Projekt frisch aus dem Git-Repository klappte. Nach Löschen von .project klappte es einwandfrei.

Problem 3: awesome Windows Manager

Wenn ich das IDEA Fenster an eine andere Position verschiebe, dann werden die Menüs nicht mehr im Fenster angezeigt. Auch ein Restart Awesome hilft hier nicht weiter. Starte ich das Fenster aber direkt rechts, dann werden die Menüs auch richtig angezeigt ... sobald ich es einmal verschiebe nicht mehr.

Mir ist bekannt, daß awesome mit Java-Programmen immer wieder Probleme hatte ... bisher hatte wmname hier immer geholfen. Bei diesem Problem aber nicht. Allerdings habe ich auch ein relative altes awesome (3.5.6), so daß ein Upgrade auf 4.x vielleicht das Problem löst.

Hier ist auch von Problemen die Rede, die angeblich gelöst sind:

  • https://github.com/awesomeWM/awesome/issues/255

Mit dem Wechsel auf die 4.x Version von awesome (siehe hier) konnte ich das Problem beseitigen.

Ich habe nur noch gelegentlich das Problem, daß Popup-Fenster während des Tippens den Fokus verlieren und ich dann in den Editor schreibe. Das ist unangenehm, passiert aber nicht ständdig - mal sehen ob ich den Trigger noch finde.

Problem 4: awesome ... geöffnete Fenster

Bei manchen Aktionen (Diff auf Files) wird ein weiteres Fenster geöffnet. Unter awesome hat man hier keine Fensterelemente zum Schließen. Mit Ctrl-F4 bekommt man es zu.

Problem 5: Keyboard Shortcuts

IDEA verwendet andere Tastaturkürzel, aber als Eclipse Entwickler kann man über File - Settings - Keymap eine Eclipse-Tastaturbelegung einstellen ... für den Anfang sicherlich mal nicht schlecht.

Problem 6: Autoscroll to/from Source

Diese Einstellung muß man in der Project-Ansicht als Autoscroll einstellen ... das Drücken des entsprechenden Icons in der Projekt-Ansicht ist nur einmalig (im Gegensatz zu Eclipse wo diese Link Editor eine dauerhafte Einstellung ist).

Erster Eindruck

Als jahrelanger Eclipse-Nutzer (davor viele andere IDEs wie NetBeans, VisualCafe, JBuilder, Emacs, ...) findet man sich relativ schnell zurecht. Sicherlich sind einige Details anders abgebildet (z. B. der Build Prozess intern vs. maven) und man muß sich an einige Sachen gewöhnen (kein sofortiges Compilieren), aber zumindest kommt man recht schnell in einen Arbeitsmodus, auf dem sich aufbauen läßt.

Der Unterschiede ist nicht extrem aber viele kleine Dinge funktionieren einfach smoother.

Konzepte

  • Projekt, z. B. ein Git Repository

  • Module - ähnlich zu einem Eclipse-Projekt

  • Einstellungen werden in einer projektspezifischen Verzeichnis .idea gespeichert (ähnlich wie in Eclipse .settings)

Maven

Mit der versteckten m2e Integration von Maven in Eclipse bin ich nie so richtig warm geworden.

Bei IntelliJ ist die Integration explizit über "Maven Projects" ... das ist mir zumindest schon mal lieber - man hat das eher im Griff, wenn der Maven Build (am besten bei einem Projekt- oder Branchwechsel) und wann der IDEA Build genutzt wird.

Es werden Umgebungsvariablen wie beispielsweise ${MAVEN_OPTS} berücksichtigt ... auf diese Weise kann man Konfigurationen des Maven-CLI auch in der IDE wiederverwenden (war bei Eclipse übrigens genauso ... wenn nicht sogar noch maven-näher, da dort auch ~/.mavenrc berücksichtigt wurde, was bei IntelliJ nicht der Fall ist).

Fazit

Ich bin recht schnell mit der neuen IDE zurechtgekommen ... mein fehlendes Wissen über die Shortcuts bremsen mich derzeit noch aus. Trotz eingestellter Eclipse-Keymap sind nur die rudimentären Shortcuts gleich ... bei Refactorings hört es dann aber auf (vermutlich ist das Mapping der Funktionalität nicht so gut).

Die Warterei auf die IDE (durch lange Build-Zyklen) hat scheinbar ein Ende und ich komme nun mehr zum Arbeiten.

Folgende Dinge finde ich besonders hilfreich:

  • Debugging-Informationen ... bei Eclipse mußte ich immer in den Views navigieren, um die Wertebelegung von Variablen zu sehen oder ein Evaluate Expression ausführen. Bei IDEA werden die Werte über den Editor gelegt:

PreviousVisual Studio CodeNextSoftwareentwicklungsprozess

Last updated 3 years ago

Was this helpful?

Debug Informationen