Язык программирования для приложения, которое должно работать вечно - PullRequest
1 голос
/ 29 июля 2010

Я обновляю приложение, которое регистрирует время, когда сотрудники приходят и покидают офис.Я не хотел бы устанавливать это приложение на одном из наших текущих серверов, что несколько важно, потому что мне пришлось бы оставить сеанс открытым, и я хотел бы держать вещи отдельно.Так что все, что у меня есть, это дешевое, дешевое оборудование.В основном, 500 МГц, 64 МБ ОЗУ Debian Lenny без приложения, и база данных MySQL для хранения информации, о да, и я в печи .

В настоящее время приложение написанона Яве.Просто консольная программа с изображением лица Дилберта, запрашивающая удостоверение личности сотрудника.Фактическая строка, которая выполняет «ожидание», выглядит следующим образом:

id = cin.nextInt();

Когда первый сотрудник приходит в понедельник утром и вводит свой идентификатор, около 40 часов не используется с момента последнего сотрудника, приложение вылетает.Не могу вспомнить фактическое исключение.

Итак, мой вопрос: есть ли хороший способ зациклить приложение Java навсегда?Или, может быть, лучше спросить, какой язык программирования лучше для этой задачи?

Я думаю, что на первый взгляд кажется очевидным не использовать big 'ol java в такой плохой системе, но давайте просто скажем, что я вроде как Java.


Редактировать: Спасибо за всеваши ответы.Однако я делаю все попытки / ловли есть.Я проблема, ошибка, приложение не может восстановиться от таких как OutOfMemoryError.

Фактический код выглядит примерно так:

static boolean start() {
    Scanner cin = new Scanner(System.in);
    int id; 
    try{
        id = cin.nextInt();
        doStuff( id );
        return true;
    }catch (Exception e){
        //which would trap all recoverable exceptions
        System.out.println("Something is wrong. Try again.");
        return false;               
    }
}

public static void main(String ... args){
    boolean first = true;
    while(true) {
        if(first) showDilbert();
        first = start();
    }
}

Извините, я не обратил больше внимания на фактическое исключение, но я думал, что Java будет отброшен довольно быстро из описания оборудования.,

Ответы [ 11 ]

0 голосов
/ 29 июля 2010

Нет ничего плохого в том, что с Java для этой задачи - хотя характеристики вашего компьютера довольно ограничены, и я ожидаю, что потребление памяти является вашей основной проблемой - одна JVM, вероятно, использует большую часть вашей доступной оперативной памяти.

Техника, которую я бы использовал в Java для поддержания работоспособности:

while (true) {
  try {
    // do stuff here

    Thread.sleep(1); // sleep a bit just to be nice to other processes
  } catch (Throwable t) {
    t.printStackTrace();
  }
}

Таким образом, любые исключения будут обнаружены, и вы увидите ошибки, но приложение продолжит работать.

Конечно, здесь есть большой провайдер предостережения - если вы продолжаете работать после критического исключения и удаляете свои данные, имея код в нестабильном состоянии, вы должны винить только себя: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...