Не всегда у разработчика есть доступ к этому самому «основному потоку», например, в контейнерах приложений. В этом случае инициализация дорогого ресурса (e. g. ConnectionFactory) будет производится из многопоточного окружения.
Есть, то есть. Но и написание биндингов ручками для lua и python не составляет труда.
Актуально, когда библиотека чужая и нет возможности править её хидеры.
Из коробки CAS имеет несколько более-менее стандартных вариантов аутентификации (файл, JpaStore, LDAP, JAAS, RADIUS и т. д.). Эти вещи описаны тут.
Кроме того, добавление новых способов аутентификации не является чем-то особо сложным, достаточно реализовать следующий интерфейс:
код
public interface AuthenticationHandler {
/**
* Method to determine if the credentials supplied are valid.
*
* @param credentials The credentials to validate.
* @return true if valid, return false otherwise.
* @throws AuthenticationException An AuthenticationException can contain
* details about why a particular authentication request failed.
*/
boolean authenticate(Credentials credentials)
throws AuthenticationException;
/**
* Method to check if the handler knows how to handle the credentials
* provided. It may be a simple check of the Credentials class or something
* more complicated such as scanning the information contained in the
* Credentials object.
*
* @param credentials The credentials to check.
* @return true if the handler supports the Credentials, false othewrise.
*/
boolean supports(Credentials credentials);
}
Ага, длина волны света порядка микрона (10^{-6}), размер атома — порядка ангстрема (10^{-10}), а ядра порядка ферми (10^{-15}). Представляете соотношение? Здесь понятие «тень» выглядит насмешкой.
JIT-компиляция происходит не при запуске, а после сбора статистики. Сначала работает интерпретатор байткода.
Про модификацию и генерацию байткода — применений довольно много: AOP, генерация прокси для классов (не интерфейсов, см. cglib), генерация кода сериализации/десериализации в рантайме (kryo), миграция кода на другие jvm (gridgain).
На десктопе оправданный подход. В энтерпрайз среде — нет. Когда приложение должно расширяться и поддерживаться десятки лет. Причем не переписыванием на новую платформу, когда она выйдет. Конечно, многие стремятся к SOA, чтобы интегрировать гетерогенные системы, но и всякие WS-* не недавно появились. Тот же SOAP появился 1998.
Актуально, когда библиотека чужая и нет возможности править её хидеры.
50 тысяч — это opencorpora.
Возник такой вопрос: есть ли простой неинтерактивный интерфейс к CAS?
Рано отправил, извиняюсь.
Кроме того, добавление новых способов аутентификации не является чем-то особо сложным, достаточно реализовать следующий интерфейс:
Оффлайн карты можно легко создать на компе robertdeveloper.blogspot.com/2009/09/trekbuddy-atlas-creator.html, а потом записать на sd-карту телефона.
Или отдавать статику с s3, как это делает dropbox для публичных файлов.
А это не инкрементальная компиляция с подменой класса в рантайме?
Про модификацию и генерацию байткода — применений довольно много: AOP, генерация прокси для классов (не интерфейсов, см. cglib), генерация кода сериализации/десериализации в рантайме (kryo), миграция кода на другие jvm (gridgain).