Сан Ниан, вы слышали об искровом яве?

Java

Эта статья - мягкая статья, я хотел бы порекомендовать ее всемspark-javaэтот каркас, здесьsparkНе про большие данныеapache-spark, а микрофреймворк для создания веб-приложений. Я кратко представлю его вам ниже.

1. Введение в искру

Spark — микрофреймворк для создания веб-приложений с минимальными накладными расходами на Kotlin и Java 8.

Быстрый старт:

Java:


import static spark.Spark.*;

public class HelloWorld {
    public static void main(String[] args) {
        get("/hello", (req, res) -> "Hello World");
    }
}

Kotlin

import spark.kotlin.*

fun main(args: Array<String>) {
    val http: Http = ignite()

    http.get("/hello") {
        "Hello Spark Kotlin!"
    }
}

Беги, чтобы увидеть:

http://localhost:4567/hello

Рожден для продуктивности

Spark Framework — это простая и выразительная веб-инфраструктура Java/Kotlin, DSL (предметно-ориентированный язык/DSL), созданная для быстрой разработки. Цель Spark — предоставить разработчикам Kotlin/Java альтернативу для разработки своих веб-приложений с максимальной выразительностью и минимальным шаблоном. Благодаря четкой философии Spark разработан не только для того, чтобы сделать вашу работу более продуктивной, но и для того, чтобы сделать ваш код лучше благодаря гибкости, декларативному характеру и богатым выражениям Spark.

Вы можете воспользоваться всеми преимуществами JVM

JVM предоставляет одну из крупнейших экосистем программирования в мире. Несмотря на то, что в нем есть много веб-фреймворков Java, веб-разработка на чистом Java традиционно громоздка. Если вы любите JVM, но ненавидите громоздкий код и фреймворки, то Spark — это веб-фреймворк для вас. Он запускается и запускается за считанные минуты, и вы можете использовать его в Groovy, Kotlin или любом другом языке, который вы используете. Spark — это выразительная, легкая и открытая веб-инфраструктура на чистом языке Java (и Kotlin), которая, в отличие от других платформ, позволяет создавать приложения по своему усмотрению.

Микросервисы, микросервисы везде! ! !

2015 год был годом взрыва микросервисов, и теперь, если вы начнете изучать микросервисы, вы поймете, что Spark отлично подходит для микросервисов. Микросервисы лучше всего работают с микрофреймворками, и Spark может создать ваш REST API, обслуживающий JSON, менее чем за десять строк кода. Хотя Spark в основном используется для создания REST API, он также поддерживает различные механизмы шаблонов. Почему бы не создать приложение Spark для серверной части и одно для внешнего интерфейса?

NodeJS-разработчик? с типскриптом? Вместо этого попробуйте Spark!

Позже NodeJS взял на себя большую часть веб-разработки на стороне сервера, но все больше и больше разработчиков NodeJS используют TypeScript и другие языки со статической типизацией, которые компилируются в JavaScript. Почему бы не быть полностью последовательным и не использовать язык, который на самом деле был разработан с использованием типов и предназначен для работы на стороне сервера? Вы также получаете все преимущества запуска вашего приложения на JVM, где библиотека классов не устаревает каждый день. Если вы перейдете с ExpressJS, синтаксис Spark будет очень знаком, и, в отличие от многих веб-фреймворков JavaScript, Spark не устареет в будущем.

Типичное использование

Наш опрос 2015 года показал, что более 50% пользователей Spark используют Spark для создания REST API, а около 25% используют Spark для создания веб-сайтов. Около 15% приложений Spark обслуживают более 10 000 пользователей в день. нажмитездесьПрочитайте полный опрос.

2. Пример кода

Getting started

Текущая версия 2.9.0, другие версии можно найти вreleases

compile group: 'com.sparkjava', name: 'spark-core', version: '2.9.0'

public class com.SparkJavaApplication {
  public static void main(String[] args) {
    get("/hello", (req, res) -> "Hello World");
  }
}

больше примеров

public class com.SparkJavaApplication {

  public static void main(String[] args) {
    port(4567);
    get("/hello", (req, res) -> "Hello World");

    get("/users/:name", (request, response) -> "Selected user: " + request.params(":name"));

    get("/news/:section", (request, response) -> {
      response.type("text/xml");
      return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><news>" + request.params("section") + "</news>";
    });

    get("/protected", (request, response) -> {
      halt(403, "I don't think so!!!");
      return null;
    });

    get("/redirect", (request, response) -> {
      response.redirect("/news/world");
      return null;
    });

    get("/", (request, response) -> "root");
    
    get("/hello2", "application/json", (request, response) -> { 
      return "{\"message\": \"Hello World\"}";
    });
  }
}

Вы можете определить открытый порт, используя функцию port(). При этом параметры Spark передаются как:paramОн передается в виде , и метод получения также является широко используемым request.params("paramName"). При определении интерфейса вы также можете указать тип, получаемый интерфейсом, например «application/json».

Кроме того, в дополнение к методу get в следующем примере показаны другие методы, такие как post и put:

public class Books {

  /**
   * Map holding the books
   */
  public static Map<String, Book> books = new HashMap<>();

  // Creates a new book resource, will return the ID to the created resource
  // author and title are sent as query parameters e.g. /books?author=Foo&title=Bar
  public static void main(String[] args) {
    post("/books", (request, response) -> {
      String author = request.queryParams("author");
      String title = request.queryParams("title");
      Book book = new Book(author, title);
      Random random = new Random();
      int id = random.nextInt(Integer.MAX_VALUE);
      books.put(String.valueOf(id), book);

      response.status(201); // 201 Created
      return id;
    });

    // Gets the book resource for the provided id
    get("/books/:id", (request, response) -> {
      Book book = books.get(request.params(":id"));
      if (book != null) {
        return "Title: " + book.getTitle() + ", Author: " + book.getAuthor();
      } else {
        response.status(404); // 404 Not found
        return "Book not found";
      }
    });

    // Updates the book resource for the provided id with new information
    // author and title are sent as query parameters e.g. /books/<id>?author=Foo&title=Bar
    put("/books/:id", (request, response) -> {
      String id = request.params(":id");
      Book book = books.get(id);
      if (book != null) {
        String newAuthor = request.queryParams("author");
        String newTitle = request.queryParams("title");
        if (newAuthor != null) {
          book.setAuthor(newAuthor);
        }
        if (newTitle != null) {
          book.setTitle(newTitle);
        }
        return "Book with id '" + id + "' updated";
      } else {
        response.status(404); // 404 Not found
        return "Book not found";
      }
    });

    // Deletes the book resource for the provided id
    delete("/books/:id", (request, response) -> {
      String id = request.params(":id");
      Book book = books.remove(id);
      if (book != null) {
        return "Book with id '" + id + "' deleted";
      } else {
        response.status(404); // 404 Not found
        return "Book not found";
      }
    });

    // Gets all available book resources (id's)
    get("/books", (request, response) -> {
      StringBuilder ids = new StringBuilder();
      for (String id : books.keySet()) {
        ids.append(id).append(" ");
      }
      return ids.toString();
    });

  }
}

Дополнительные примеры могут относиться кгитхаб проект

Суммировать

Spark — это очень легкий веб-фреймворк, и если вам не нужно так много функций и вы просто предоставляете простой веб-интерфейс, то Spark — очень подходящий выбор. Кроме того, Spark также подходит для архитектуры микросервисов, функций у него больше, если вам интересно, вы можете изучить его самостоятельно. Эта статья является лишь введением, так что мне не нужно ссылаться на веб-фреймворк Spring, который занимает большой объем памяти, а скорость запуска проекта взлетела до небес.

Ссылаться на