banner
月落星河Tsukistar

月落星河Tsukistar

浩瀚中的伟大,孤独间的渺小
github
twitter
youtube
bilibili
email

Developing a SpringBoot 3.0.0 project using Fleet on deepin.

Fleet is known as the next generation IDE developed by JetBrains. It is currently in public beta and can be downloaded and used for free.

The minimum supported version of JDK for SpringBoot 3.0.0 is JDK 17, which is a significant step away from JDK 8.

Out of curiosity about new tools and technologies, I started trying to develop a SpringBoot 3.0.0 project using Fleet on deepin, continuing my SpringBoot learning.

Installing Fleet#

In the Fleet download interface, click "Download Toolbox App" to download a tar package. After extracting the package, double-click the executable file inside to automatically install Toolbox.

download-toolbox
toolbox-tar
install-toolbox

Install Fleet in Toolbox. After installation, you will find that it is simple and free, with fewer proprietary areas and optimizations for environment configuration. Therefore, you need to configure some development environments yourself, such as JDK and Gradle.

Installing OpenJDK#

Download OpenJDK 17 version from Adoptium:

openjdk

After completion, execute the following steps in the download directory:

tar -zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.8.1_1.tar.gz 
mv jdk-17.0.8.1+1/ /usr/local/jdk

(If there is no /usr/local/jdk directory, you need to use sudo mkdir /usr/local/jdk to create a folder and use sudo chown -R current_username:current_username /usr/local/jdk to change the ownership of the folder to the current user. The purpose of this operation is to save multiple JDK versions on one machine.)

Then add environment variables, execute vim /etc/profile.d/java.sh, and add or modify the following in the file:

export JAVA_HOME=/usr/local/jdk/jdk-17.0.8.1+1
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

If it is the first configuration, you need to grant permissions to the file:

sudo chmod 755 /etc/profile.d/java.sh
sudo chown login_username:login_username /etc/profile.d/java.sh

Reload the environment variables using source /etc/profile.d/java.sh, then enter sudo vim ~/.bashrc and add source /etc/profile.d/java.sh at the bottom, and save.

Use java -version and javac -version to check if JDK is configured successfully.

java-version

Installing Gradle#

Create a gradle folder under /usr/local:

cd /usr/local
sudo mkdir gradle
sudo chown login_username:login_username /usr/local/gradle

Then enter the folder and use wget to download the Gradle installation package, unzip it, and then delete the installation package:

cd gradle
wget https://downloads.gradle.org/distributions/gradle-8.3-bin.zip
unzip gradle-8.3-bin.zip
rm -rf gradle-8.3-bin.zip

Now there is only one gradle-8.3 folder under the gradle directory. This is done to facilitate switching between multiple versions of Gradle.

Similar to configuring JDK environment variables, use sudo vim /etc/profile.d/gradle.sh to create Gradle environment variables:

export GRADLE_HOME=/usr/local/gradle/gradle-8.3
export GRADLE_USER_HOME=$GRADLE_HOME/repo
export PATH=${GRADLE_HOME}/bin:${PATH}

Reload the environment variables using source /etc/profile.d/gradle.sh, then enter sudo vim ~/.bashrc and add source /etc/profile.d/gradle.sh at the bottom, and save.

Use gradle --version to check if Gradle is installed successfully.

finish-install-gradle

Creating a Project#

Use Spring Initializr to create a SpringBoot project. Select the build tool, language, version, and fill in the relevant package name, as shown in the following figure:

spring-initializr

Then click "GENERATE" to download a zip file. Extract the zip file and open the extracted files with Fleet. Fleet will automatically initialize based on the Gradle configuration file:

auto-init

Add server.port=8000 to /src/main/resources/application.properties to specify the startup port. Then add the corresponding Controller in a directory like /src/main/java/Controller, as shown in the following figure, to complete a function that returns "Hello SpringBoot" when accessing a specified path:

package studio.tsukistar.demo.Controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class testController {
    
    @GetMapping("/hello")
    public String hello() {
        String hellotext;
        hellotext = "Hello SpringBoot";
        return hellotext;
    }
}

Press Ctrl+R or click the run button in the upper right corner, and Fleet will automatically build and run. Enter http://localhost:8000/hello in the browser to see the result.

result

Conclusion#

As a lightweight IDE introduced by JetBrains, Fleet still has many areas that need improvement in practical use.

Fleet has some advantages, such as automatically building and indexing based on the files in the project folder in intelligent mode, and the code completion function provides relatively complete information. It also supports Alt+Enter to correct errors, which is comfortable for experienced JetBrains users.

However, compared to the advantages, there are still many disadvantages. Taking the development of SpringBoot projects as an example, due to the lack of plugin support and the absence of a dedicated option for creating projects based on project types, beginners almost have to rely on many third-party tools (such as Spring Initializr) to complete project initialization and construction. One more complaint, the Git management inside Fleet cannot select the .gitignore file when it is modified, so it cannot be selected with one click, unlike using git commands in the Terminal.

useless-fleet-git

Therefore, based on the overall user experience, I currently do not recommend using Fleet. It does not have a guided process like dedicated IDEs, nor does it have as many plugin supports as VSCode. I hope that many features can be improved in future versions, and the user experience will be better.

Reference Articles#

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.