• Какие инструменты для разработки мобильного приложения на базе веб-технологий сейчас есть?

    alexiusp
    @alexiusp
    senior frontend developer
    Ещё есть ionic (https://ionicframework.com/). Это библиотека визуальных компонентов, которые выглядят как нативные для каждой из платформ. Построен на базе cordova и angular. Но разработчики вроде бы делают stencil, который будет фрэймворко-независимым. Так же у них есть куча дополнительных инструментов, как, например, утилита для запуска и отладки разрабатываемого приложения на тестовом устройстве.
    Ответ написан
    4 комментария
  • Параллельный запуск под Windows Java программ с использованием dll. Есть ли опасность использования в dll общих областей памяти?

    @res2001
    Developer, ex-admin
    Если процессы с загруженной dll разные, то вы не должны беспокоиться о памяти - она будет разная в разных процессах.
    Но могут быть другие нюансы, например использование одного и того же порта для сокета или открытие глобальных именованных каналов с заданным именем и т.п. В этом случае либо второй и т.д. процессы будут вываливаться с ошибками, либо возможны разные трудно диагностируемые проблемы.
    Ответ написан
    Комментировать
  • Почему программа может неправильно работать при запуске в jar?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    В программе у вас символы закодированы в utf-8, а из консоли вы считываете в cp866. Естественно, условия в if не срабатывают. Решение в лоб относительно простое - указать кодировку потока ввода:

    BufferedReader stdInBReader  =  new  BufferedReader(new InputStreamReader(System.in, "cp866"));

    Но у этого решения есть существенный минус - пропадает кроссплатформенность, основная фишка Java. Это решить уже сложнее. Придётся либо получать кодировку от пользователя в качестве параметра:

    String encoding = System.getProperty("console.encoding", "utf-8");
    BufferedReader stdInBReader  =  new  BufferedReader(new InputStreamReader(System.in, encoding));

    Теперь пользователь может указать кодировку при запуске
    java -Dconsole.encoding=cp866 Ex
    а если не укажет, то будет utf-8.

    Либо использовать грязный хак, который может не работать на JVM отличных от HotSpot или не работать на других версиях HotSpot:

    import java.io.Console;
    import java.lang.reflect.Method;
    import java.lang.reflect.InvocationTargetException;
    
    public class Ex {
        private static final String encoding;
    
        static {
            String e = null;
            try {
                final Class<Console> clazz = Console.class;
                final Method method = clazz.getDeclaredMethod("encoding", new Class[0]);
                method.setAccessible(true);
                e = (String) method.invoke(null);
            }
            catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException exc) {}
            finally {
                encoding = e;
            }
        }
    
        public static void main(String[] args) throws IOException {
            BufferedReader stdInBReader  =  new  BufferedReader(new InputStreamReader(System.in, encoding));
        }
    }
    Ответ написан
    1 комментарий