Единица измерения API в Java?
JSR-275 был отклонен, проект Units of Measurement API for Java представляет собой набор интерфейсов, но не нашел реализацию с открытым исходным кодом.
На этом посте: Какую реализацию jsr-275 следует использовать? владелец проекта упоминает, что реализация будет готова к концу прошлого года в JScience, но не нашел там ничего для преобразования между единицами веса или длины, и когда я искал JScience на https://maven.java.net/, Я нашел его, но JAR даже не было в каталоге https://maven.java.net/content/repositories/snapshots/org/jscience/jscience/5.0-SNAPSHOT/, поэтому мне пришлось получить его от где-нибудь еще.
Этот проект остался позади? И есть ли в настоящее время реализация для преобразования единиц измерения в Java и, возможно, репозитория Maven?
3 ответа
Насколько я знаю, JScience очень жив. В настоящее время проект переносится на Java.net, и перенос не завершен. Это, скорее всего, причина, по которой вы не можете видеть JAR-снимки для 5.0. Фактически, самый последний снимок был подготовлен только после решения конкретной проблемы конфигурации, сообщенной в JIRA Java.net. Возможно, вам следует подождать несколько дней или, возможно, отправить администратору проекта письмо о том, что JScience POM необходимо использовать в промежуточный период.
Unit-API ( http://www.unitsofmeasurement.org/) является преемником JSR-275.
Наиболее активной реализацией на данный момент является Eclipse UOMo
Обновление этого JSR-363 Units of Measurement API было завершено в 2016 году и предоставляет довольно полный UoM API. Теперь это было заменено JSR-385 Units of Measurement API 2.0 . Вы можете найти код API и реализации на Github здесь https://github.com/unitsofmeasurement.
Вот простой пример преобразования с использованием UoM API 2.0.
import tech.units.indriya.quantity.Quantities;
import javax.measure.Quantity;
import javax.measure.quantity.Length;
import static javax.measure.MetricPrefix.CENTI;
import static tech.units.indriya.unit.Units.METRE;
class SimpleUnitExample {
public static void main(String[] args) {
Quantity<Length> lengthQuantity = Quantities.getQuantity(25, METRE);
System.out.println(lengthQuantity.to(CENTI(METRE)));
}
}
С зависимостью от tech.units:indriya:2.0.4
напечатает
2500 cm
.
Вы можете найти намного больше примеров в этом репозитории .